我一直在尝试根据其大小将一个大PDF文件拆分为多个pdf文件。我能够分割它,但它只创建一个文件,其余的文件数据丢失。意味着它不会创建多个文件来分割它。有人可以帮忙吗?这是我的代码
public static void main(String[] args) {
try {
PdfReader Split_PDF_By_Size = new PdfReader("C:\\Temp_Workspace\\TestZip\\input1.pdf");
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream("C:\\Temp_Workspace\\TestZip\\File1.pdf"));
document.open();
int number_of_pages = Split_PDF_By_Size.getNumberOfPages();
int pagenumber = 1; /* To generate file name dynamically */
// int Find_PDF_Size; /* To get PDF size in bytes */
float combinedsize = 0; /* To convert this to Kilobytes and estimate new PDF size */
for (int i = 1; i < number_of_pages; i++ ) {
float Find_PDF_Size;
if (combinedsize == 0 && i != 1) {
document = new Document();
pagenumber++;
String FileName = "File" + pagenumber + ".pdf";
copy = new PdfCopy(document, new FileOutputStream(FileName));
document.open();
}
copy.addPage(copy.getImportedPage(Split_PDF_By_Size, i));
Find_PDF_Size = copy.getCurrentDocumentSize();
combinedsize = (float)Find_PDF_Size / 1024;
if (combinedsize > 496 || i == number_of_pages) {
document.close();
combinedsize = 0;
}
}
System.out.println("PDF Split By Size Completed. Number of Documents Created:" + pagenumber);
}
catch (Exception i)
{
System.out.println(i);
}
}
}
答案 0 :(得分:0)
(顺便说一下,如果你用 itext 标记你的问题,那就太好了。)
PdfCopy
用于关闭来自页面导入的源PdfReaders
或PdfReader
已关闭的导入页面PdfCopy
。这是因为最初的预期用例是从多个源PDF创建一个目标PDF,结合许多用户忘记关闭PdfReaders
这一事实。
因此,关闭第一个目标PdfCopy
后,PdfReader
也会关闭,并且不再提取其他页面。
如果我将最近的签入正确解释为iText SVN存储库,则PdfReaders
的隐式关闭正在从代码中删除。因此,使用下一个 iText 版本之一,您的代码可能会按预期工作。