iText7.1 movePage导致错误:无法在部分刷新的文档中移动页面
我需要把目录从最后一页移到第三页。我曾经在iText7.0中通过删除它来实现这一点,将PdfPage设置为removePage返回的内容,然后在需要的地方添加页面。然而,iText 7.1似乎改变了这一点,removePage现在返回void。我不能只使用movePage,因为它说它不能在部分刷新的文档中移动页面 iText7.0代码(TOC页面是最后一页): 使用iText7.1时,removePage不会返回已删除的页面,因此我会:iText7.1 movePage导致错误:无法在部分刷新的文档中移动页面,itext7,Itext7,我需要把目录从最后一页移到第三页。我曾经在iText7.0中通过删除它来实现这一点,将PdfPage设置为removePage返回的内容,然后在需要的地方添加页面。然而,iText 7.1似乎改变了这一点,removePage现在返回void。我不能只使用movePage,因为它说它不能在部分刷新的文档中移动页面 iText7.0代码(TOC页面是最后一页): 使用iText7.1时,removePage不会返回已删除的页面,因此我会: PdfPage page = pdf.getPage(pd
PdfPage page = pdf.getPage(pdf.getNumberOfPages());
pdf.movePage(page, 3)
我也试过了
pdf.movePage(pdf.getNumberOfPages(), 3)
不管怎样,我都收到了相同的错误消息:
com.itextpdf.kernel.PdfException:无法移动部分刷新文档中的页面。第1页已刷新
使用iText 7.1.2和下面的代码,我能够实现这一点:
public static void manipulatePdf(String src, String dest) throws Exception {
PdfDocument pdfDocument = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfPage page = pdfDocument.getPage(pdfDocument.getNumberOfPages());
pdfDocument.movePage(page, 1);
pdfDocument.close();
}
你也可以这样做:
public static void manipulatePdf(String src, String dest) throws Exception {
PdfDocument srcDoc = new PdfDocument(new PdfReader(src));
PdfDocument resultDoc = new PdfDocument(new PdfWriter(dest));
resultDoc.initializeOutlines();
List<Integer> pages = new ArrayList<>();
int lastPage = srcDoc.getNumberOfPages();
pages.add(lastPage);
for (int i = 1; i <=lastPage-1; i++){
pages.add(i);
}
srcDoc.copyPagesTo(pages, resultDoc);
resultDoc.close();
srcDoc.close();
}
publicstaticvoidmanipulatedpf(stringsrc,stringdest)抛出异常{
PdfDocument srcDoc=新PdfDocument(新PdfReader(src));
PdfDocument resultDoc=新PdfDocument(新PdfWriter(dest));
resultDoc.initializeOutlines();
列表页=新建ArrayList();
int lastPage=srcDoc.getNumberOfPages();
添加(最后一页);
对于(int i=1;i KevinWillems,非常感谢。您提供的解决方案有效!似乎没有必要升级到7.1.2。我使用7.1.0,movepage没有任何错误。
public static void manipulatePdf(String src, String dest) throws Exception {
PdfDocument srcDoc = new PdfDocument(new PdfReader(src));
PdfDocument resultDoc = new PdfDocument(new PdfWriter(dest));
resultDoc.initializeOutlines();
List<Integer> pages = new ArrayList<>();
int lastPage = srcDoc.getNumberOfPages();
pages.add(lastPage);
for (int i = 1; i <=lastPage-1; i++){
pages.add(i);
}
srcDoc.copyPagesTo(pages, resultDoc);
resultDoc.close();
srcDoc.close();
}