Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iText7.1 movePage导致错误:无法在部分刷新的文档中移动页面_Itext7 - Fatal编程技术网

iText7.1 movePage导致错误:无法在部分刷新的文档中移动页面

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

我需要把目录从最后一页移到第三页。我曾经在iText7.0中通过删除它来实现这一点,将PdfPage设置为removePage返回的内容,然后在需要的地方添加页面。然而,iText 7.1似乎改变了这一点,removePage现在返回void。我不能只使用movePage,因为它说它不能在部分刷新的文档中移动页面

iText7.0代码(TOC页面是最后一页):

使用iText7.1时,removePage不会返回已删除的页面,因此我会:

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();
}