2012-06-27 4 views
1

Я хотел бы сгенерировать PDF-файл с помощью Apache FOP и XSLT. Однако, если изображение больше, то страница PDF-документа, тогда он получает столько места, сколько доступно на странице (включая правое и нижнее поле). Таким образом, часть изображения выходит за пределы страницы.Создать PDF-файл из большого изображения с помощью Apache FOP

Возможно ли установить fop, чтобы, если изображение не может быть установлено на страницу, оно автоматически разделяется на несколько страниц?

Вот мой шаблон XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.1" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" 
    xmlns:java="http://xml.apache.org/xslt/java" 
    xmlns:dp="http://www.dpawson.co.uk" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:f="Functions" 
    xmlns:xdt="http://www.w3.org/2005/02/xpath-datatypes" 
    exclude-result-prefixes="java"> 

    <xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes" /> 

    <xsl:param name="image-print-path" /> 

    <xsl:template match="/"> 
     <fo:root 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 margin-top="20pt" margin-bottom="35pt" /> 
        <fo:region-before extent=".5in"/> 
        <fo:region-after extent=".5in"/> 
       </fo:simple-page-master> 
      </fo:layout-master-set> 

      <fo:page-sequence master-reference="simpleA4"> 
       <fo:static-content flow-name="xsl-region-before" text-align="left"> 
        <fo:block font-size="10pt"> 
         Print 
        </fo:block> 
       </fo:static-content> 

       <fo:static-content flow-name="xsl-region-after"> 
        <fo:block font-size="10pt" text-align="left"> 
         something else 
        </fo:block> 
       <!-- TODO: add current date, page number --> 
       </fo:static-content> 

       <fo:flow flow-name="xsl-region-body"> 
        <fo:block font-size="10pt" page-break-after="always"> 
         <fo:external-graphic src="{$image-print-path}"/> 
        </fo:block> 
       </fo:flow> 
      </fo:page-sequence> 
     </fo:root> 
    </xsl:template> 

</xsl:stylesheet> 

ответ

0

Не похоже, есть что-нибудь в the spec, что можно форматировать так, как вам нужно. Это оставляет вам несколько вариантов:

  1. проверка графический, прежде чем вводить его в XSL рабочий процесс и сократить его на несколько изображений для использования на нескольких страницах
  2. осматривают графики, чтобы определить его размеры и создать размер страницы, достаточно большой, чтобы содержать его, и оставить нарезку к принтерам
  3. набор content-width для scale-down-to-fit, чтобы показать все графики на одной странице
+0

Привет, спасибо за ответ. В итоге мое решение разделило изображение на части, чтобы они могли поместиться на странице. –

Смежные вопросы