Itext 7.1将段落添加到文档

时间:2018-04-18 08:25:53

标签: java itext7

在iText 7.0中,我使用下面的代码将内容添加到pdf文档中,一切都按预期工作。

ByteArrayOutputStream out = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(out);
PdfDocument pdfDocument = new PdfDocument(writer);
try {
    LicenseKey.loadLicenseFile(".../key.xml");
    Document document = new Document(pdfDocument);
    document.add(new Paragraph("Some content"));
                //---more code----

使用版本7.1.0时,我在行

上出现异常
document.add(new Paragraph("Some content"));

例外:

See nested exception;
nestedexceptionis:com.itextpdf.kernel.PdfException: document.has.no.pages

当我抓住在document.add调用期间抛出的Throwable时,我得到了一个

 NoSuchMethodError
com/itextpdf/layout/Document.add(Lcom/itextpdf/layout/element/IBlockElement;)Lcom/itextpdf/layout/Document;

2 个答案:

答案 0 :(得分:1)

尝试addNewPage()PdfDocument

答案 1 :(得分:1)

在评论中发现实际上有一个

NoSuchMethodError com/itextpdf/layout/Document.add(Lcom/itextpdf/layout/element/IBlockElement;)Lcom/itextpdf/layout/Document;

导致此问题。

从7.0.2开始,iText 7布局Document类有一个方法

public Document add(IBlockElement element)

最多7.0.1没有接口IBlockElement; add方法签名不同,并明确使用泛型

public <T extends IElement> Document add(BlockElement<T> element)

此更改已于2016-11-25 13:45:32在git commit 7cfc57b25c9faca96bc15e39163730002d9e4c9a中提交。

因此,您似乎已使用至少iText 7.0.2编译代码,但最多使用iText 7.0.1运行它。

请确保使用iText版本运行代码,而不是早于编译它的代码。