我使用iText使用NetBeans 8.2从我的Java文件创建PDF文件。我从here下载了iText JAR文件。我的iText版本是7.0.2。
这是部分代码(我只包含与我的Java文件中的iText相关的导入文件和代码):
的 Attendance.java
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
.
.
.
.
try {
OutputStream output = new FileOutputStream(new File("C:\\Users\\dell\\Desktop\\Attendance.pdf"));
DefaultListModel model1 = (DefaultListModel)present.getModel();
Document doc = new Document();
PdfWriter.getInstance(doc, output);
doc.open();
for (int i = 0; i < 68; i++) {
doc.add(new Paragraph((String) model1.getElementAt(i)));
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Attendance.class.getName()).log(Level.SEVERE, null, ex);
}
问题:
我收到以下3个错误:
没有为Document(无参数)找到合适的构造函数
找不到符号:getInstance(Document,OutputStream)
找不到符号:open()
我已经关注了许多教程,例如this,但不管怎么说,即使我使用了相同的代码,他们也没有面对我所面临的错误。如果有人使用iText做这样的事情,任何建议将不胜感激。如果您需要更多信息,请与我们联系。
答案 0 :(得分:5)
您正在混合使用iText 5教程和iText 7代码。您正在使用iText 7,但是您正在查看一个描述如何使用iText 5的非官方教程.iText 7是iText 5的完全重写,API完全不同。
请查看官方网站上的以下教程:
可以找到一个hello world示例here,如下所示:
//Initialize PDF writer
PdfWriter writer = new PdfWriter(dest);
//Initialize PDF document
PdfDocument pdf = new PdfDocument(writer);
// Initialize document
Document document = new Document(pdf);
//Add paragraph to the document
document.add(new Paragraph("Hello World!"));
//Close document
document.close();
正如您所看到的,它与您正在使用的iText 5代码完全不同。
重要提示: 始终转到official web site了解相关信息!有许多网站包含的示例会给您错误的建议,特别是关于数字签名(过时的示例)和合并PDF(错误的方法)。
至于下载iText,请始终从download hub page开始,因为它包含指向最新版本的链接,包括附加组件的兼容性矩阵。