2016-06-16 10 views
1

xslt変換を使用して、生成されたpdfファイルにフッターを追加する方法はありますか?XSLTのフッター(xml-html-pdf transormation)

私はPDFへのhtmlとhtmlにXML、オブジェクトをXMLに変換するためにこのコードを使用

次のように

ObjectModel obj = new Object(); 
    File file = new File("test.xml"); 
    JAXBContext jaxbContext = JAXBContext.newInstance(ObjectModel.class); 
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 


    // output pretty printed 
    jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

    jaxbMarshaller.marshal(obj, file); 
    jaxbMarshaller.marshal(obj, System.out); 



    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    Transformer transformer = tFactory.newTransformer(new StreamSource("cert.xsl")); 
    transformer.transform(new StreamSource("test.xml"),new StreamResult(new FileOutputStream("sample.html"))); 
    String File_To_Convert = "sample.html"; 
    String url = new File(File_To_Convert).toURI().toURL().toString(); 
    System.out.println(""+url); 
    String HTML_TO_PDF = "ConvertedFile.pdf"; 
    OutputStream os = new FileOutputStream(HTML_TO_PDF);  
    ITextRenderer renderer = new ITextRenderer(); 
    renderer.setDocument(url);  
    renderer.layout(); 
    renderer.createPDF(os);   
    os.close(); 

XSLファイルは次のとおりです。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:java="http://xml.apache.org/xalan/java" 
      exclude-result-prefixes="java" 
      version="2.0"> 
<xsl:output method="xml" indent="yes" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" 
      doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" omit-xml-declaration="no"/> 
<xsl:template match="/"> 
    <html> 
     <body style="font-family:Book Antiqua;"> 
      //content here 


     </body> 
    </html> 
</xsl:template> 

私がしたいですこの変換でフッターを追加することが可能かどうかを知る。私はこれを見つけたthreadしかし、私はまだそれを行う方法を失った。

+0

入力XMLファイルをクエリに追加して解決します。 – nawazlj

+0

静的フッター?または動的に作成されますか?つまり、「XYZ、Manufacturer.com(c)2016」で作成されたもの、または実際の日付、元のファイル名などを追加するだけですか? – Fildor

+0

XMLをXHTMLに変換するためにXSLTを使用し、XHTMLをPDFに変換するためのいくつかの 'ITextRenderer'ソフトウェアを使用しているようです。そのソフトウェアに関連して質問にタグを付けることができます。 (X)HTMLとページングされたメディアについては、https://www.w3.org/TR/css3-page/#populating-margin-boxesはフッタを設定する方法を指定する試みですが、あなたのソフトウェアがそれをサポートしているかどうかは確かではありません。 –

答えて

0

Apache FOPで直接XMLからPDFへの変換を行うことができます。

XSL-FOを使用すると、static-contentはいくつかのヘッダーとフッターを作成できます。

<fo:page-sequence master-reference="main"> 
    <fo:static-content flow-name="header"> 
    <xsl:call-template name="MyHeader"/> 
    </fo:static-content> 
    <fo:static-content flow-name="footer"> 
    <xsl:call-template name="MyFooter"/> 
    </fo:static-content> 
    <fo:flow> 
    ... 
    </fo:flow> 
</fo:page-sequence>