2012-06-27 123 views
1

我想使用Apache FOP和XSLT從圖像生成PDF。但是,如果圖像更大,然後是PDF文檔頁面,則它只會獲得儘可能多的頁面空間(包括右側和底部邊距)。所以,圖像的一部分超出頁面範圍。使用Apache FOP從大圖像生成PDF

這是可能的設置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-widthscale-down-to-fit顯示單頁
+0

喜上整個圖形,謝謝大家的響應。最後,我的解決方案是將圖像分解成片段以便能夠適合頁面。 –