• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Java, PDF

  • Автор темы Azrael
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
относительность путей имеет значение, лучше указывать абсолютные (для теста)
а чего получаться с ДХЛ - базовый xsl я сделал, его надо расширить до обработки параграфов с ИД стилей (типа шрифты, цвет)
другой вопрос - будетли проще это на XSLT или зарядить velocity
ЗЫЖ щас нет времени посмотреть ваш пример.... полагаю там нет "ничего сложного"
 

NickProstoNick

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

Понимаю что где-то туплю.. но вот где?! :(
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
может это натолкнет на мысль в файлами link removed
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Все гораздо интересней :rolleyes:
Оказывается это java Notes-клиента так отрабатывает :(
Попробовал в eclipse - все гуд. Ну не все, но многие вопросы решились
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Подробностями просто завалил)
Ну собственно как и советами. :rolleyes:

Добавлено:
я этот код запускал из под notes 7.x
Запускал под 8.5.3 :(
PDF создается, но картинки не тянутся.
С кириллицей пока еще не разобрался.
Еще вопрос по xsl-шаблону для dxl. Он не дописан? Смотрю что таблички игнорируются.
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
lmike что-то отвечает, а фидбэка, полезного для форума, нет (и не только в этой теме - я об этом).
а тут во всех темах всех авторов фидбэк есть?
Для фидбэка нужен результат. А результата еще нет.
Кому нужен фидбэк - пусть участвует в обсуждении и помогает решить вопрос, а не ждет готового кода.
И если уж на то пошло - тема не моя. Скажем так - примазался к вопросу.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
NickProstoNick
код запускался как есть? все файлы были разложены по-местам?
я навскидку не помню что там выложено (давно было)
шаблон не дописан и если почитать в проекте - там указано, у мя просто не было времени копать
и надо было решить - разрабатывать xlst или сделать подмену с пом. velocity (на это тоже указывалось)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
за генерацию отвечает агент 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 нужен только для ПДФ, остальное все проистекает в памяти (но судя по процессу - не д.б. проблем)
результат присобачивется в док
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
за генерацию отвечает агент 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 методы определения количества столбцов в таблице? Хочется какой-то универсальный метод "рисования" таблиц
Ну в общем и на том спасибо. Курю матчасть
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
Есть ли для xsl методы определения количества столбцов в таблице?
не все так просто ;)
глобальных переменных нет в хсл, т.е. напроходить по нодам в рекурсии и передавать счетчик, а на возврате его получать
лепим шаблон, кот. бежит только по таблице в опред. области и получает её ячейки, меняя на фоп сучности

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
не все так просто ;)
глобальных переменных нет в хсл, т.е. напроходить по нодам в рекурсии и передавать счетчик, а на возврате его получать
лепим шаблон, кот. бежит только по таблице в опред. области и получает её ячейки, меняя на фоп сучности

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

При таком сочетании получаю ошибку "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>
 

lmike

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

Добавлено:
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
ну система ругаецо на отсутствующий элемент (т.е. 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>
Только дублирует все что есть
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
все. мозг поплыл. Дубликаты победил. Таблицы рисуются любые. Порядок текста соблюдается.
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>
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
просьба - шаблон сюда полный выложить (апосля допиливания) я его в проект отправлю (так же)
 
Мы в соцсетях:

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