Java, PDF

  • Автор темы Автор темы Azrael
  • Дата начала Дата начала
относительность путей имеет значение, лучше указывать абсолютные (для теста)
а чего получаться с ДХЛ - базовый xsl я сделал, его надо расширить до обработки параграфов с ИД стилей (типа шрифты, цвет)
другой вопрос - будетли проще это на XSLT или зарядить velocity
ЗЫЖ щас нет времени посмотреть ваш пример.... полагаю там нет "ничего сложного"
 
относительность путей имеет значение, лучше указывать абсолютные (для теста)
а чего получаться с ДХЛ - базовый xsl я сделал, его надо расширить до обработки параграфов с ИД стилей (типа шрифты, цвет)
другой вопрос - будетли проще это на XSLT или зарядить velocity
ЗЫЖ щас нет времени посмотреть ваш пример.... полагаю там нет "ничего сложного"
С абсолютными путями тоже не работает.
Качнул по твоей ссылке примеры examples.zip
Картинки не экспортятся :(

Понимаю что где-то туплю.. но вот где?! :(
 
может это натолкнет на мысль в файлами link removed
 
Все гораздо интересней :rolleyes:
Оказывается это java Notes-клиента так отрабатывает :(
Попробовал в eclipse - все гуд. Ну не все, но многие вопросы решились
 
Подробностями просто завалил)
Ну собственно как и советами. :rolleyes:

Добавлено:
я этот код запускал из под notes 7.x
Запускал под 8.5.3 :(
PDF создается, но картинки не тянутся.
С кириллицей пока еще не разобрался.
Еще вопрос по xsl-шаблону для dxl. Он не дописан? Смотрю что таблички игнорируются.
 
lmike что-то отвечает, а фидбэка, полезного для форума, нет (и не только в этой теме - я об этом).
а тут во всех темах всех авторов фидбэк есть?
Для фидбэка нужен результат. А результата еще нет.
Кому нужен фидбэк - пусть участвует в обсуждении и помогает решить вопрос, а не ждет готового кода.
И если уж на то пошло - тема не моя. Скажем так - примазался к вопросу.
 
NickProstoNick
код запускался как есть? все файлы были разложены по-местам?
я навскидку не помню что там выложено (давно было)
шаблон не дописан и если почитать в проекте - там указано, у мя просто не было времени копать
и надо было решить - разрабатывать xlst или сделать подмену с пом. velocity (на это тоже указывалось)
 
за генерацию отвечает агент FOPbased
складываются файлы
File baseDir = new File("c:\\examples\\embedding");
File outDir = new File(baseDir, "out");
каталог создаст сама (если на сервере - будет оболом по секурити)
фонты берутся из
static final String fontBasePath="file:///c:/windows/fonts/";
если они лежат в др. месте - надо исправить
c:\\examples\\embedding нужен только для ПДФ, остальное все проистекает в памяти (но судя по процессу - не д.б. проблем)
результат присобачивется в док
 
за генерацию отвечает агент FOPbased
складываются файлы
File baseDir = new File("c:\\examples\\embedding");
File outDir = new File(baseDir, "out");
каталог создаст сама (если на сервере - будет оболом по секурити)
фонты берутся из
static final String fontBasePath="file:///c:/windows/fonts/";
если они лежат в др. месте - надо исправить
c:\\examples\\embedding нужен только для ПДФ, остальное все проистекает в памяти (но судя по процессу - не д.б. проблем)
результат присобачивется в док
Есть ли для xsl методы определения количества столбцов в таблице? Хочется какой-то универсальный метод "рисования" таблиц
Ну в общем и на том спасибо. Курю матчасть
 
Есть ли для xsl методы определения количества столбцов в таблице?
не все так просто ;)
глобальных переменных нет в хсл, т.е. напроходить по нодам в рекурсии и передавать счетчик, а на возврате его получать
лепим шаблон, кот. бежит только по таблице в опред. области и получает её ячейки, меняя на фоп сучности

Добавлено: есть примерчики, но осилить их - это куча времени :)
я даже не пытался (многабукав), проще самому найти методы и подходы (тем более, что ДХЛ сильно отличается)
 
не все так просто ;)
глобальных переменных нет в хсл, т.е. напроходить по нодам в рекурсии и передавать счетчик, а на возврате его получать
лепим шаблон, кот. бежит только по таблице в опред. области и получает её ячейки, меняя на фоп сучности

Добавлено: есть примерчики, но осилить их - это куча времени :)
я даже не пытался (многабукав), проще самому найти методы и подходы (тем более, что ДХЛ сильно отличается)
Это я уже понял ;)
мозг плывет, от кофе тошнит уже :) пора завязывать :)

При таком сочетании получаю ошибку "fo:table-body" is missing child elements. Хотя во всех источниках в нете написано что так вызывать шаблоны можно. Ничего не понимаю :(
Код:
<xsl:template match="ldn:table">
<fo:table table-layout="fixed" width="100%">
<fo:table-body>
<xsl:apply-templates select="tablerow"/>
</fo:table-body>
</fo:table>
</xsl:template>

<xsl:template match="tablerow">
<fo:table-row font-weight="bold">
<xsl:apply-templates select="tablecell" />
</fo:table-row>
</xsl:template>

<xsl:template match="tablecell">
<fo:table-cell>
<fo:block><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:template>
 
ну система ругаецо на отсутствующий элемент (т.е. fo:table-body)
я так понимаю это уже при формировании ПДФ, что наводит на мысль - такое сочетание не сущ.
а какой FO получается-то (в результате) - мобуть его посмотреть (в чем там трабла)

Добавлено:
 
ну система ругаецо на отсутствующий элемент (т.е. fo:table-body)
я так понимаю это уже при формировании ПДФ, что наводит на мысль - такое сочетание не сущ.
а какой FO получается-то (в результате) - мобуть его посмотреть (в чем там трабла)

Добавлено:
Сейчас доточу сохранение FO и поглядим.
Да... действительно, в Fo-файле все заканчивается телом таблицы :) Дальше разбора не происходит ;)
Код:
<fo:table width="100%" table-layout="fixed">
<fo:table-body/>
</fo:table>
Кажется разобрался. Надо было для шаблонов строк и столбцов указать документ ldn
Код:
<xsl:template match="ldn:table">
<fo:table table-layout="fixed" width="100%">
<fo:table-body>
<xsl:apply-templates select="ldn:tablerow" />
</fo:table-body>
</fo:table>
</xsl:template>

<xsl:template match="ldn:tablerow">
<fo:table-row font-weight="bold">
<xsl:apply-templates select="ldn:tablecell" />
</fo:table-row>
</xsl:template>

<xsl:template match="ldn:tablecell">
<fo:table-cell>
<fo:block><xsl:value-of select="." /></fo:block>
</fo:table-cell>
</xsl:template>
Только дублирует все что есть
 
все. мозг поплыл. Дубликаты победил. Таблицы рисуются любые. Порядок текста соблюдается.
lmike надеюсь не против не значительных правок.
Что не получилось:
- кириллица
- таблицы вне RT-поля. Но думаю это не реально. Придется наверное перегонять весь документ в RT-поле и с ним работать
- чтоб все это работало под Lotus :)

Чего хотелось бы:
- разбор вложений doc и xls
- стили таблицы и текста
- масштабирование изображения
- разбор эмбедед изображений

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">dxl2fo.xsl</div></div><div class="sp-body"><div class="sp-content">
Код:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- $Id$ -->
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ldn="http://www.lotus.com/dxl"
xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo">
<xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
<xsl:param name="versionParam" select="'1.0'"/>
<xsl:param name="body.font.family">Arial</xsl:param>

<!-- ================= -->
<!-- omit other nodes -->
<!-- ================= -->
<xsl:template match="ldn:document/*[name()!='item']"/>

<!-- ========================= -->
<!-- root element: document	-->
<!-- ========================= -->
<xsl:template match="ldn:document">
<fo:root font-family="Arial" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="simpleA4" page-height="29.7cm" page-width="21cm"
margin-top="2cm" margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simpleA4">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="12pt" space-after="5mm">Version <xsl:value-of select="$versionParam"/>
</fo:block>
<fo:block font-size="10pt">
<xsl:apply-templates select="ldn:item"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>

<!-- ========================= -->
<!-- child element: item	  -->
<!-- ========================= -->
<xsl:template match="ldn:item">
<xsl:variable name="fname" select="ldn:object/ldn:file/@name"/>
<xsl:variable name="fdata" select="ldn:object/ldn:file/ldn:filedata/text()"/>
<xsl:choose>
<xsl:when test="string-length($fdata)!=0 and (contains($fname, '.jpg') or contains($fname, '.JPG'))">
<fo:block font-size="10pt">
<xsl:element name="fo:external-graphic">
<!--		 <xsl:text>File Name:</xsl:text><xsl:value-of select="ldn:object/ldn:file/@name"/>
<xsl:text/>-->
<xsl:attribute name="src">url('data:image/jpeg;base64,<xsl:value-of select="$fdata"/>')</xsl:attribute>
</xsl:element>
</fo:block>
</xsl:when>
<xsl:when test="./node()[name()='richtext']">
<xsl:apply-templates match="ldn:richtext"/>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<!-- ============================= -->
<!-- child element: item/richtext -->
<!-- ============================= -->
<xsl:template match="ldn:richtext">
<xsl:apply-templates match="ldn:par"/>		 
</xsl:template>

<xsl:template match="ldn:table">
<fo:table table-layout="fixed" width="100%">
<fo:table-body>
<xsl:apply-templates select="ldn:tablerow" />
</fo:table-body>
</fo:table>
</xsl:template>

<xsl:template match="ldn:tablerow">
<fo:table-row font-weight="bold">
<xsl:apply-templates select="ldn:tablecell" />
</fo:table-row>
</xsl:template>

<xsl:template match="ldn:tablecell">
<fo:table-cell>
<fo:block><xsl:value-of select="." /></fo:block>
</fo:table-cell>
</xsl:template>

<!-- ============================ -->
<!-- child element: richtext/par -->
<!-- ============================ -->
<xsl:template match="ldn:par">
<!--	<xsl:value-of select="ldn:objectref/ldn:picture/ldn:gif/text()"/>-->
<xsl:choose>
<xsl:when test="string-length(ldn:objectref/ldn:picture/ldn:gif/text())!=0">
<fo:block font-size="10pt">
<xsl:element name="fo:external-graphic">
<xsl:attribute name="src">url('data:image/gif;base64,<xsl:value-of select="."/>')</xsl:attribute>
</xsl:element>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="10pt">
<xsl:value-of select="./text()"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>
 
просьба - шаблон сюда полный выложить (апосля допиливания) я его в проект отправлю (так же)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!