是否可以在文档创建期间删除页面,如数据库中的“事务”

时间:2013-11-14 15:01:06

标签: itext

我有一些使用Document,PdfWriter和PdfResource生成文档的代码。当它循环生成PDF时,它会创建新页面。有时,可能存在新页面生成失败的情况,并且不应添加页面。有没有办法处理“事务性”页面。即创建页面并输入内容,如果失败,则“回滚”更改并不将页面添加到文档中?

我有一些代码如下:

pdfResource.document.newPage();

PdfContentByte contentByte = writer.getDirectContent();
contentByte.saveState();

try {
    // do some work to fill the page
} catch (Exception e) {
    // How do I rollback and remove the page???
} finally {
    contentByte.restoreState();
}

我目前正在使用5.0.2版

1 个答案:

答案 0 :(得分:1)

我知道你无法做你想做的事。

建议的路径是在调用newPage()之前执行“try / catch”内容。设置一些状态变量变量,执行完整性测试等。如果您正在使用图像,请确保您可以实际读取它们。实际上我会事先实例化/加载图像字节。

另一种选择是将这些页面标记为“最后删除”,然后在除此之外的所有内容上调用pdfReader.selectaPages()