【发布时间】:2013-10-16 01:00:21
【问题描述】:
免责声明:我一直在尝试使用 iText 来做到这一点。我已经阅读、研究、询问、询问、实验,并做了我能想到的一切来完成这项工作。我很生气。请不要以为我没有尝试过,只是来这里是为了让其他人为我做这件事;事实并非如此。我想学习,我想弄清楚这一点。我正在从有这方面经验的人那里寻找一个好的方向。
我有一个包含可编辑文本字段的 PDF。我想要做的是以编程方式从该 PDF 中读取并从已经存在的文本字段中获取文本,从我的应用程序中的其他位置获取文本,然后将以前的信息 + 新的文本信息写回原始 PDF。
我尝试过的:
- 使用 PdfReader 阅读 PDF
- 使用 PdfStamper(PdfReader, FileOutputStream) 写入 PDF
- 使用 reader.getAcroFields() 获取文本字段。
我已经在网上搜索了几天,但我无法解决这个问题。当我这样做时:
String in = "C:/Users/me/Desktop/file.pdf";
String out = "C:/Users/me/Desktop/file.pdf";
PdfReader reader = new PdfReader(in);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(out));
AcroFields form = stamper.getAcroFields();
form.setField("dateDisc1", "5/21");
它最终会创建一个损坏的 PDF (file.pdf)。
如果有更简单的方法可以做到这一点,请帮助我对此有所了解。
谢谢!
【问题讨论】:
-
你试过不同的输入/输出文件名,对吧?
-
@StefanoSanfilippo 是的,我试过了。就在那时,它给了我一个无法打开的损坏 PDF。
-
我没有看到你关闭压模。您是否只是忘记将最终的
stamper.close ()复制到您的问题中,还是真的丢失了?在后一种情况下添加它,但使用不同的文件名。 -
@mkl 我自己想出来的。我知道您通过这项努力帮助了我很多。查看解决方案的答案。