使用PdfContentByte在iText中解决这个问题。当我尝试创建新页面时,我正在使用下面的代码 -
canvas = writer.getDirectContent();
canvas.saveState();
canvas.stroke();
canvas.restoreState();
...
canvas.endText();
itextDocument.newPage();
setUpperFontAndSize(canvas);
canvas.beginText();
问题发生在调用endText()时。它有什么解决方案吗?
答案 0 :(得分:3)
OP说
问题发生在调用endText()
时
根据该方法的源代码,相关例外表明之前没有匹配的beginText()
调用。
文本对象以 BT 运算符开头,以 ET 运算符结束,如示例所示,并在表107中进行了描述。
实施例
BT …Zero or more text operators or other allowed operators… ET
...文本对象不能静态嵌套......
答案 1 :(得分:2)
您的代码段不完整。我们看到您使用:
canvas.endText();
因此,该陈述是非法的,您获得例外是正常的,因为您在第一次使用后只能使用endText()
:
canvas.beginText();
在您的代码段中,我们只有在触发beginText()
后才会看到endText()
。
另请注意,BT
/ ET
文本对象(您在引入beginText()
/ endText()
序列时创建的对象)"生活&# 34;在页面上。文本对象不能跨越"多页。
例如,这将是非法的:
canvas.beginText();
// do stuff
document.newPage();
canvas.endText();
BT
/ ET
对应出现在同一页面上:
canvas.beginText();
// do stuff
canvas.endText();
document.newPage();