- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 source.fo 文件转换为 Java 中的 result.pdf 文件。
我正在寻找与调用 Apache Fop 命令相同的结果:
fop -fo source.fo -pdf result.pdf
也许对于这个问题来说并不是一个重要的事实,但我已经设法使用 freemarker 模板创建了这些 .fo 文件,并且在我使用 java fop 库在 Google 上找到的所有示例中,他们使用 xml 创建了 pdf和一个 xsl-fo 文件,这不是我的情况。
我的 B 计划(我试图避免)包括调用系统命令。
预先感谢您的帮助。
最佳答案
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" language="EN">
<fo:layout-master-set>
<fo:simple-page-master margin-right="5mm" margin-left="5mm" margin-bottom="5mm" margin-top="5mm" page-width="210mm" page-height="297mm" master-name="A4-portrail">
<fo:region-body margin-bottom="20mm" margin-top="25mm"/>
<fo:region-before precedence="true" display-align="before" extent="25mm" region-name="xsl-region-before"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4-portrail">
<fo:static-content flow-name="xsl-region-before">
<fo:table border-style="solid" border-width="0.4mm" border-color="black" font-size="10pt" width="100%" table-layout="fixed">
<fo:table-column column-width="proportional-column-width(20)"/>
<fo:table-column column-width="proportional-column-width(45)"/>
<fo:table-column column-width="proportional-column-width(20)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding-left="2mm" display-align="center" text-align="left">
<fo:block>1299Levent Divilioglu</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center" text-align="center">
<fo:block font-size="150%">
<fo:basic-link external-destination="http://www.example.com">List of Month Records</fo:basic-link>
</fo:block>
<fo:block space-before="3mm"/>
</fo:table-cell>
<fo:table-cell padding-right="2mm" display-align="center" text-align="right">
<fo:block>19. Mayis Mah. No: 6 Kadikoy/Istanbul</fo:block>
<fo:block space-before="6mm" display-align="before">Page <fo:page-number/> . <fo:page-number-citation ref-id="end-of-document"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:static-content>
<fo:flow reference-orientation="0" border-collapse="collapse" flow-name="xsl-region-body">
<fo:block>Records of Month</fo:block>
<fo:table space-after="5mm" display-align="center" text-align="center" border-style="solid" border-width="0.35mm" border-color="black" font-size="10pt" width="100%" table-layout="fixed">
<fo:table-column column-width="proportional-column-width(20)"/>
<fo:table-column column-width="proportional-column-width(30)"/>
<fo:table-column column-width="proportional-column-width(25)"/>
<fo:table-column column-width="proportional-column-width(50)"/>
<fo:table-body font-size="95%">
<fo:table-row height="8mm">
<fo:table-cell>
<fo:block>Date</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Called Number</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Price</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Discount Type</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>03-10-2016:19:25:03</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>505-999-88-77</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>12.95</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>4</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>08-10-2016:20:13:35</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>507-666-42-23</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>24.45</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>1</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>15-10-2016:17:47:34</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>535-234-44-54</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>21.34</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>3</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>21-10-2016:21:31:23</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>542-323-43-58</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>51.35</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>2</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block id="end-of-document">
<fo:instream-foreign-object>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="150mm" width="200mm">
<path style="fill:yellow;stroke:red;stroke-width:2" d="M153 334 C153 334 151 334 151 334 C151 339 153 344 156 344 C164 344 171 339 171 334 C171 322 164 314 156 314 C142 314 131 322 131 334 C131 350 142 364 156 364 C175 364 191 350 191 334 C191 311 175 294 156 294 C131 294 111 311 111 334 C111 361 131 384 156 384 C186 384 211 361 211 334 C211 300 186 274 156 274"/>
</svg>
</fo:instream-foreign-object>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
package com.levent.fop;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import org.xml.sax.SAXException;
public class ConvertFoToPdf {
public static void main(String[] args) throws SAXException, IOException, TransformerException {
hede();
}
public static void hede() throws SAXException, IOException, TransformerException {
// Step 1: Construct a FopFactory by specifying a reference to the configuration file
// (reuse if you plan to render multiple documents!)
// FopFactory fopFactory = FopFactory.newInstance(new File("D:/output/fop.xconf"));
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
// Step 2: Set up output stream.
// Note: Using BufferedOutputStream for performance reasons (helpful with FileOutputStreams).
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("D:/output/myfile.pdf")));
try {
// Step 3: Construct fop with desired output format
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
// Step 4: Setup JAXP using identity transformer
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(); // identity transformer
// Step 5: Setup input and output for XSLT transformation
// Setup input stream
Source src = new StreamSource(new File("D:/output/input.fo"));
// Resulting SAX events (the generated FO) must be piped through to FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Step 6: Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
//Clean-up
out.close();
}
}
}
关于java - 将 .fo 文件转换为 .pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39174167/
我有一个 XML 输入文件,可以说 shipnote.xml其中包含一个零件项目列表。部分项目具有通常的属性 qty , partno和 label .每个项目都分配给一个 packetno . 我写
我们客户的要求是提供带圆角的 PDF 表格。我只有 Apache FOP 处理器可供我使用,它不支持圆角属性。它也不支持 float ,因此无法向左和向右 float 圆形图像。 你对如何做到这一点有
我的 FO 流程有问题,因为在一页上,标题显示在一页的末尾并在之后的页面上继续。如何向 title-element 添加属性,以便标题始终显示在同一页面上,这意味着:没有分页符。 谢谢! /丹尼 最佳
我希望 column-count="2"只出现在页面的某些部分。 ]>
我正在为我的 XML 内容生成 xsl-fo 文档,然后将此内容传递给将生成 PDF 的第三方 DLL 之一。我需要以 45 度角显示测试。如何实现这一目标? 谢谢 最佳答案 我很确定您不能在纯 XS
在我的情况下,我必须在两个表格行之间提供高达 0.5cm 的空间。我怎样才能做到这一点。 代码:: 我用过了:
我正在从我的 xsl 和 xml 文件生成一个 pdf,其中我需要在第一页的末尾显示一个表格。但是由于该表格上方还有一些表格,将其显示为静态文本会将其向下推到第 2 页(或第 3 页,依此类推)。所以
我正在从 xml 和 xsl-fo 以及 Apache FOP 创建一个 pdf 文件,我需要在一行上写文本。我的意思是类似于手工编辑的表格,你可以在其中写上名字、姓氏等。是这样的:姓名:______
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我的 XSL 页面主代码看起来像这样......
我有一些很长的表格,它们跨越多个页面,用 Apache-FOP 1.1 呈现 表格有标题,例如“表 7.6. 事物的详细信息”和列标题。 在每个连续页面上,列标题在顶部正确重复。但我还需要让表格延续也
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
我创建了一个 XSL-FO 模板,它打印了一些包含动态变化的文本的块。有时一个块被分成两页,因为页面上没有足够的空间。有没有办法将块放在下一页而不是在不适合的情况下将其拆分到页面上?我试图将它放入一个
我有一个非常简单的模板: 我如何告诉DO即使块为空也要保留空行。 最佳答案 只需在的末尾添加一个元素。像这样:
我有一个 fo:block 可能跨越一个页面。我想在该 block 所在的第一页的底部放置一些文本,例如“继续”。 源文档在 标记内有一系列 。 我认为做到这一点的唯一方法是在源文档的正确位置添加下一
我为 sp_sign 获得的值(如下所示)我想将其用作 fo:external graphics 的 src 。我尝试了很多事情仍然没有运气请帮助。 // 提前致谢 问候,
我正在使用 XSL:FO 和 Apache FOP 创建可访问的文档。要确认可访问性,PDF Accesibility Checker 3 (PAC3)应该使用。不幸的是,检查器提示每个表格单元格边框
我正在使用 XSL:FO 和 Apache FOP 创建可访问的文档。要确认可访问性,PDF Accesibility Checker 3 (PAC3)应该使用。不幸的是,检查器提示每个表格单元格边框
我正在以这种方式在 XSL FO 文档中创建背景文本: Background Watermark Text
我有一个 .xml 文件,我想生成一个 .pdf 文件。我使用 xsl-fo 来实现这一点。 问题是我无法请求当前页面的编号以将其存储到变量中,而是根据其值做出不同的事情。 具体:如果当前页面是0模3
我是一名优秀的程序员,十分优秀!