在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;
答案 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版本运行代码,而不是早于编译它的代码。