Java 为什么使用iText插入pdf后,纵向页面会更改为横向页面?
我正在使用“itext-5.5.8”,试图在主pdf文档中插入(一)页纵向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
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
时,你没有考虑到这种轮换。