XSL-fo Размер изображения с PDF - PullRequest
3 голосов
/ 24 ноября 2010

У меня есть большое количество XML-документов, которые создаются в docbook и через maven публикуются как в формате html for, так и в формате pdf. Поколения работает нормально, а HTML выглядит нормально. У меня проблема с размером изображений в PDF-версии. Изображения представляют собой набор снимков экрана, некоторые из которых являются полноэкранными, некоторые имеют ширину и высоту около 2/3, а другие представляют собой небольшие окна поиска. Очевидно, что мне нужно сделать массивный рефакторинг атрибутов изображения. Мне было интересно, что я должен рефакторинг это? Я ищу способ создания до 4 «типов» изображений и для их применения для их собственного размера. Пример изображения выглядит так:

  <section><title>Screenshot</title>
     <mediaobject>
       <imageobject>
        <imagedata fileref="./views/screenshots/editNote.png" scalefit="0" width="100%"/>
       </imageobject>
     </mediaobject>
  </section>

И это работает только для некоторых размеров моего скриншота.

Я поиграл с масштабированием, шириной и шириной контента / высотой контента, и они, похоже, решают разные части проблемы. Должен ли я также смотреть в области просмотра?

ПРИМЕЧАНИЕ. Нет опасений нарушить генерацию HTML, поскольку я могу включить «исключить свойства» в XSL.

Ответы [ 2 ]

4 голосов
/ 24 ноября 2010

Это не совсем то, что вы спрашиваете, но вы нормализовали настройки DPI в ваших файлах изображений? Хотя они игнорируются при рендеринге HTML, они имеют решающее значение в рендеринге docbook-> PDF.

Когда я имел дело с этим в прошлом, исправление DPI не требовало дальнейшей настройки источника DocBook.

1 голос
/ 25 ноября 2010

У вас есть @scalefit="0", попробуйте @scalefit="1":

<section><title>Screenshot</title>
     <mediaobject>
       <imageobject>
        <imagedata fileref="./views/screenshots/editNote.png" 
                   scalefit="1" width="100%" contentdept="100%"/>
       </imageobject>
     </mediaobject>
  </section>  

Вот несколько советов по использованию атрибутов масштабирования.

  • Для масштабированиядля графики заданной ширины установите для этого содержимого размер контента в элементе imagedata, например contentwidth = "8.5cm".Если вы указываете число без единиц измерения, предполагается, что это пиксели.

  • Чтобы масштабировать графику так, чтобы она соответствовала доступной ширине в выводе на печать, используйте width = "100%" и scalefit =«1» атрибуты.Для текста с отступом, как в списке, доступная ширина - от текущего отступа до правого поля.

  • Чтобы сохранить изображение для печатного вывода в его естественном размере, если оно не слишком велико дляподгоните доступную ширину, в этом случае уменьшите ее до размера, используйте атрибуты scalefit = "1", width = "100%" и contentdepth = "100%".

...

  • Некоторые процессоры XSL-FO не поддерживают все эти атрибуты.Возможно, вам придется поэкспериментировать, чтобы увидеть, что работает.Например, версия 0.20.5 FOP обрабатывает ширину, как если бы она была содержимым, и игнорирует любой атрибут реальной ширины содержимого.

http://www.sagehill.net/docbookxsl/ImageSizing.html

...