【发布时间】:2015-03-06 12:17:48
【问题描述】:
我有一个关于 itextpdf 的下一个问题。
private void generatePdf() throws Exception {
FileOutputStream fos = null;
try {
PdfReader reader = new PdfReader("template.pdf");
fos = new FileOutputStream("test.pdf");
PdfStamper stamper = new PdfStamper(reader, fos);
stamper.close();
} catch (Exception e) {
throw e;
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
throw new Exception(e);
}
}
}
}
此方法必须读取模板并将其保存为新的 pdf。但是,如果我查看结果 pdf,我只会看到空白页(4 - 与模板的数量相同)。 有趣的是,在 jboss 服务器上的 Web 应用程序上下文中调用此方法。但是,当我在简单的 java 应用程序(带有 main() 方法的类)中像 main 方法一样调用此方法时,它可以正常工作。 另外,我可以添加什么模板具有将来必须填写但现在没有任何编辑的可编辑字段。 任何人都可以假设这里有什么问题吗?
最好的问候, 谢尔盖
【问题讨论】:
-
可以分享一下template.pdf和输出的test.pdf吗?
-
Pdf 文件已上传到谷歌驱动程序:模板 - drive.google.com/file/d/0B3-DPMN-iMOmNjItRVJ4MHRZX3M/… 结果 - drive.google.com/file/d/0B3-DPMN-iMOmSDJyWUFRYzFoN3c/…
-
好的,首先我使用当前的 iText 版本(您的 5.0.6 很古老,我使用当前的 5.5.6 开发快照)运行您的程序,输出看起来像一个会期望。你应该考虑更新。我会看看你的输出,看看里面有什么问题。
-
我已将 lib 版本更新为 5.5.5,但结果相同。链接到结果文件 - drive.google.com/file/d/0B3-DPMN-iMOmdlZhMWpJejNwM3c/…
-
在这两种情况下,代码超过 128 的字符都会被破坏。看起来该文件在某处被视为文本,像 Latin1 编码一样加载,并使用 UTF-8 存储,这是大小爆炸的一个原因。不过,交叉引用条目似乎是正确的。这使我假设模板已经以缺陷方式提供给代码。您是如何将模板 PDF 提供给服务器的?您能检查该模板是否还没有损坏吗?你是否在那里使用相同的代码,尤其是你是否也在那里使用
new PdfReader("template.pdf")阅读模板?
标签: java pdf jboss itext itextpdf