iText PDF创建错误

时间:2018-04-08 06:53:53

标签: java pdf netbeans itext

我使用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个错误:

  1.   

    没有为Document(无参数)找到合适的构造函数

  2. Document Error

    1.   

      找不到符号:getInstance(Document,OutputStream)

    2. getInstance

      1.   

        找不到符号:open()

      2. open

        我已经关注了许多教程,例如this,但不管怎么说,即使我使用了相同的代码,他们也没有面对我所面临的错误。如果有人使用iText做这样的事情,任何建议将不胜感激。如果您需要更多信息,请与我们联系。

1 个答案:

答案 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开始,因为它包含指向最新版本的链接,包括附加组件的兼容性矩阵。