Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XSLT中的页脚(xml html pdf转换)_Java_Xslt - Fatal编程技术网

Java XSLT中的页脚(xml html pdf转换)

Java XSLT中的页脚(xml html pdf转换),java,xslt,Java,Xslt,有没有办法使用xslt转换在生成的pdf文件上添加页脚 我使用以下代码将对象转换为xml、xml转换为html和html转换为pdf: ObjectModel obj = new Object(); File file = new File("test.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(ObjectModel.class); Marshaller jaxbMarshaller = ja

有没有办法使用xslt转换在生成的pdf文件上添加页脚

我使用以下代码将对象转换为xml、xml转换为html和html转换为pdf:

    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>

//满足于此


我想知道在这个转换中是否可以添加页脚。我发现了这一点,但我仍然不知道如何做到这一点。

您可以通过进行XML到PDF的直接转换

使用XSL-FO,
静态内容
允许您创建一些页眉和页脚

<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>

...

您可以通过进行XML到PDF的直接转换

使用XSL-FO,
静态内容
允许您创建一些页眉和页脚

<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>

...

在查询中添加输入XML文件以解析其静态页脚?还是动态创建?我的意思是:您想添加“Created by XYZ,Manufacturer.com(c)2016”之类的内容,还是包括实际日期、原始文件名之类的内容?您似乎使用XSLT将XML转换为XHTML,然后使用
ITextRenderer
软件将XHTML转换为PDF。您可能希望标记与该软件相关的问题。至于(X)HTML和分页媒体,是一种试图指定填充页脚的方法的尝试,我不知道它的支持程度如何,当然也不知道您的软件是否支持它;没有找到一个简洁的示例,但请看这里在查询中添加您的输入XML文件以解析其静态页脚?还是动态创建?我的意思是:您想添加“Created by XYZ,Manufacturer.com(c)2016”之类的内容,还是包括实际日期、原始文件名之类的内容?您似乎使用XSLT将XML转换为XHTML,然后使用
ITextRenderer
软件将XHTML转换为PDF。您可能希望标记与该软件相关的问题。至于(X)HTML和分页媒体,是一种试图指定填充页脚的方法的尝试,我不知道它的支持程度如何,当然也不知道您的软件是否支持它;没有找到一个简洁的例子,但请看这里