java在使用iText创建pdf之后,如何打开它?
我用iText创建了一个pdf,我想打开它,但当我打开时,Adobe Reader会告诉我“打开文档时出错。此文件已打开或被其他应用程序使用”。 我该如何解决
这是我的代码(很抱歉出现休斯顿println异常;):
try {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("c:/Users/Gabriel/Desktop/"+txtName.getText().toString()+".pdf"));
PdfReader reader = new PdfReader("src/file.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("c:/Users/Gabriel/Desktop/"+txtName.getText().toString()+".pdf"));
AcroFields form = stamper.getAcroFields();
..code..
stamper.close();
//document.close();
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "c:/Users/Gabriel/Desktop/"+txtName.getText().toString()+".pdf");
}catch (Exception exc) {
System.out.println("Houston we got a problem! : "+exc);
}
}
# 1 楼答案
您正在使用旧的iText版本。在过去,我们需要{}从头开始创建文档,我们需要{}操作现有文档
你似乎想要填写一个表格,它需要
PdfStamper
,但出于某种神秘的原因,你也会使用PdfWriter
,好像你想从头开始创建一个新的PDF如果你坚持使用旧的iText版本,你应该删除几行:
在旧的iText中,确实没有理由使用
Document
和PdfWriter
类来填充表单为了避免您的困惑,我们从头重写了iText,大约两年前我们发布了这个重写。看到你在iText上选择了一个新的旧版本,真是太棒了。此外:iText 5不再受支持,那么为什么不使用iText 7呢
请阅读iText 7跳转入门教程,了解今天如何填写表单:https://developers.itextpdf.com/content/itext-7-jump-start-tutorial-net/chapter-4-making-pdf-interactive