簡體   English   中英

使用Apache FOP從大圖像生成PDF

[英]Generate PDF from a big image using Apache FOP

我想使用Apache FOP和XSLT從圖像生成PDF。 但是,如果圖像較大,則為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>

看起來規范中沒有任何內容可以按照您需要的方式進行格式化。 這為您提供了一些選擇:

  1. 在將圖形注入XSL工作流之前,請先對其進行檢查,然后將其切成許多圖像以用於多個頁面
  2. 檢查圖形以確定尺寸,並創建足以容納圖形的頁面尺寸,然后將切片留給打印機
  3. content-width設置content-widthscale-down-to-fit在單個頁面上顯示整個圖形

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM