Java 为什么使用iText插入pdf后,纵向页面会更改为横向页面?

Java 为什么使用iText插入pdf后,纵向页面会更改为横向页面?,java,itext,Java,Itext,我正在使用“itext-5.5.8”,试图在主pdf文档中插入(一)页纵向pdf,代码工作得非常完美,但插入纵向页面后,会自动更改为横向页面,不知道为什么 代码: try { PdfReader firstPdf = new PdfReader(mainFileWithPath); //main doc PdfReader secondPdf =new PdfReader(addFileNameWithPath); // inserting pages

我正在使用“itext-5.5.8”,试图在主pdf文档中插入(一)页纵向pdf,代码工作得非常完美,但插入纵向页面后,会自动更改为横向页面,不知道为什么

代码:

try {
        PdfReader firstPdf = new PdfReader(mainFileWithPath); //main doc
        PdfReader secondPdf =new PdfReader(addFileNameWithPath); // inserting pages

        PdfStamper stamp = new PdfStamper(firstPdf, new FileOutputStream(outputPDFFile));

            int totalNumOfPagesToInsert = secondPdf.getNumberOfPages();
            int i =1;
            while (i<=totalNumOfPagesToInsert) {
                // Get a page(s) from secondPdf with the given pageNo
                PdfImportedPage page  = stamp.getImportedPage(secondPdf,i);

                // insert new page in to the newly created pdf at specified page number.
                stamp.insertPage(INSERT_AT_PAGE_NO + (i-1), secondPdf.getPageSize(i));

                // copy the content of the page copied from secondPdf.
                stamp.getUnderContent(INSERT_AT_PAGE_NO + (i-1)).addTemplate(page, 0, 0);

                i++;
            }

            //close the new created pdf.
            stamp.close(); 
试试看{
PdfReader firstPdf=新的PdfReader(mainFileWithPath);//主文档
PdfReader secondPdf=新PdfReader(addFileNameWithPath);//插入页面
PdfStamper stamp=newpdfstamper(firstPdf,newfileoutputstream(outputpdfile));
int totalNumOfPagesToInsert=secondPdf.getNumberOfPages();
int i=1;

而(我作者@Bruno Lowagie提到“没有考虑到轮换”

已经修复了下面的代码之类的问题

try {

            PdfReader firstPdf = new PdfReader(mainFileWithPath);
            PdfReader secondPdf =new PdfReader(addFileNameWithPath);

            // create new pdf with the content from firstPdf
            PdfStamper stamp = new PdfStamper(firstPdf, new FileOutputStream(outputPDFFile));
            stamp.setRotateContents(false);

            int totalNumOfPagesToInsert = secondPdf.getNumberOfPages();
            int i =1;
            while (i<=totalNumOfPagesToInsert) {
                // Get a single page from secondPdf with the given pageNo
                PdfImportedPage page  = stamp.getImportedPage(secondPdf,i); //Actual working code

                // insert new page in to the newly created pdf at specified page number.
                // choose page size bas
                stamp.insertPage(INSERT_AT_PAGE_NO + (i-1), secondPdf.getPageSizeWithRotation(i)); //Actual working code

                // copy the content of the page copied from secondPdf.
                stamp.getUnderContent(INSERT_AT_PAGE_NO + (i-1)).addTemplate(page, 0, 0); //Actual working code

                i++;
            }

            //close the new created pdf.
            stamp.close();
试试看{
PdfReader firstPdf=新的PdfReader(mainFileWithPath);
PdfReader secondPdf=新的PdfReader(addFileNameWithPath);
//使用firstPdf中的内容创建新pdf
PdfStamper stamp=newpdfstamper(firstPdf,newfileoutputstream(outputpdfile));
邮票.套票内容(假);
int totalNumOfPagesToInsert=secondPdf.getNumberOfPages();
int i=1;

while(i)可能是原始页面有一个旋转。您可以使用
secondPdf.getPageRotation(i)
来检查这一点。请注意,您当前使用的是
secondPdf.getPageSize(i)
。与使用
secondPdf.getPageSizeWithRotation(i)相比,这可能会导致不同的页面大小
。此外,我不会使用
PdfStamper
插入页面(您将失去插入页面中可能出现的所有互动性)。您不使用
PdfCopy
有什么具体原因吗?感谢作者@Bruno Lowagie,secondPdf.getPageRotation(1)给我270,没有理由使用“PdfCopy”,我使用它…这很有希望解决我的问题。啊哈,
getPageRotation(1)
给你270解释了原件和副本之间的区别。在将页面添加到
PdfStamper
时,你没有考虑到这种轮换。