【发布时间】:2013-01-16 13:42:30
【问题描述】:
我有一个当前存储为内存中字符串的 XML 文档,并希望将其呈现为 PDF。换言之,PDF 内容将是一个 XML 文档。该方法呈现的 XML 是通用的——可能会发送多种类型的 XML 文档。
我很难弄清楚如何使用各种基于 Java 的框架来完成。
Apache FOP
这个框架似乎需要将文档中的 XML 元素特定转换为 FOP 实体。由于有问题的方法必须接受通用 XML,我认为这个框架不符合我的要求。
iText
我尝试使用 iText/Flying Saucer (org.xhtmlrenderer) 的组合呈现文档,虽然它确实呈现 PDF,但内容仅包含空格分隔的数据值,没有 xml 元素或属性。使用下面的代码和测试数据:
文件
<?xml version="1.0" encoding="UTF-8"?>
<root>
<elem1>value1</elem1>
<elem2>value2</elem2>
</root>
代码
File inputFile = new File(PdfGenerator.class.getResource("test.xml").getFile());
OutputStream os = new FileOutputStream("c:\\temp\\Sample.pdf");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(inputFile);
renderer.layout();
renderer.createPDF(os);
os.close();
生成的 PDF 包含内容值 value1 value2,但没有标签。
我的问题是 有人可以提供代码 sn-p 用于使用上述框架之一渲染包含 XML 内容的 PDF,还是有其他框架更适合我的需求?
编辑: 我意识到here 提出了同样的问题,但似乎提出的解决方案需要深入了解 css 文件中传入 XML 文档的结构。
【问题讨论】:
-
您是否考虑过带有 XML 输入源的 JasperReports?
-
如果 XML 是通用的添加,你让它听起来,你希望它如何呈现?作为表示 XML 内容的结构化树?
标签: java xml pdf itext apache-fop