我有一个XML文档,目前存储在内存中的字符串中,并希望将其呈现为PDF。换句话说,PDF内容将是一个XML文档。该方法呈现的XML是通用的--可能会发送多种类型的XML文档。
我在使用各种基于Java的框架时遇到了一些困难。
Apache FOP
看起来这个框架需要将文档中的XML元素转换为FOP实体。由于所需方法必须接受通用XML,我认为这个框架不符合我的要求。
iText
我尝试使用iText/Flying Saucer (org.xhtmlrenderer)的组合来呈现文档,虽然它确实呈现了PDF,但内容仅包含以空格分隔的数据值,没有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();
生成一个包含内容值 value1 value2
的 PDF,但不包含标签。
我的问题是:是否有人能够提供一个代码片段,使用以上框架之一来呈现包含 XML 内容的 PDF,或者是否有另一个更适合我的需求的框架?
编辑:我意识到同样的问题在这里被问到了,但似乎所提供的解决方案需要对传入的 XML 文档结构在 CSS 文件中进行深入了解。