私は100k個以上のpdfファイルを1つのpdfファイルにマージする方法を尋ねますか?多くのpdfをマージする方法
私はすでにコードは、いくつかのPDFファイルのために働いていることを、このチュートリアルをお読みください。しかし、10k pdfファイルで試したところ、このエラー "java.lang.OutOfMemoryError:GCオーバーヘッドの上限を超えました"が返されました。
すでに-Xmxまたは-Xmsを使ってみましたが、エラーは「Javaヒープスペース」になりました。
「pdf.flushCopiedObjects(firstSourcePdf);」も使用しています。それは助けにならない。または、私はそれを間違って使用していますか?
File file = new File(pathName);
File[] listFile = file.listFiles();
if (listFile == null) {
throw new Exception("File not Found at " + pathName);
}
Arrays.sort(listFile, 0, listFile.length - 1);
PdfADocument pdf = new PdfADocument(new PdfWriter(dest),
PdfAConformanceLevel.PDF_A_1A,
new PdfOutputIntent("Custom", "", "http://www.color.org",
"sRGB IEC61966-2.1", null));
//Setting some required parameters
pdf.setTagged();
pdf.getCatalog().setLang(new PdfString("en-US"));
pdf.getCatalog().setViewerPreferences(
new PdfViewerPreferences().setDisplayDocTitle(true));
PdfDocumentInfo info = pdf.getDocumentInfo();
info.setTitle("iText7 PDF/A-1a example");
//Create PdfMerger instance
PdfMerger merger = new PdfMerger(pdf);
//Add pages from the first document
for (File filePdf : listFile) {
System.out.println("filePdf = " +filePdf.getName());
PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(filePdf));
merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages());
pdf.flushCopiedObjects(firstSourcePdf);
firstSourcePdf.close();
}
pdf.close();
PDF文書(または大規模なPDFファイル)を大量にマージするときこれは既知の問題であるあなたに
2番目のリンクに所属していますか?そうであれば、それを[自己昇進に関するルール](/ help/promotion)に従って明示的に述べる必要があります。 – Glorfindel
HexaPDFがあなた自身の製品である場合、あなたがそれにリンクするとき、関連を明らかにする必要があります。それ以外の場合はスパムとみなされる可能性があります。 –
申し訳ありません、ありがとうございます - 私はちょうどその答えを編集しました。 – gettalong