У меня ниже iText
код для чтения файлов и добавления его в главный файл PDF, поэтому он в основном добавляет страницу PDF в существующий PDF в абсолютном положении. Абсолютное положение и номер страницы в главном PDF-документе будут определяться динамически. Иногда это может быть на стр. 1 с 100,100(x,y)
или стр. 2 с 250,250(x,y)
. Я просматриваю объекты PDF, где каждый объект представляет файл PDF, затем я буду применять бизнес-логику для преобразования PDF-объекта в файл PDF, а это srcPdf
. Теперь мне нужно, чтобы добавить этот srcPdf
в абсолютной позиции в мастер PDF (который pdfStamper
здесь):Лучший подход к использованию PdfStamper in for loop
for(ListOfPdfObject pdfObj: ListOfPdfObjects) {
// code to create srcPdf so there will be new srcPdf for each iteration. srcPdf is flattened pdf of acro form field pdf.
PdfReader reader2 = new PdfReader(srcPdf.getAbsolutePath());
PdfImportedPage page = pdfStamper.getImportedPage(reader2, 1);
pdfStamper.insertPage(1, reader2.getPageSize(1));
pdfStamper.getUnderContent(1).addTemplate(page, 100, 100);
pdfStamper.close(); // problem is here
reader2.close();
}
Здесь pdfStamper
создается за пределами for-loop
, как показано ниже:
PdfReader pdfReader = new PdfReader(new FileInputStream(tempPdf));
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(destPdf));
Проблема заключается в том, если я закрою pdfStamper
после for-loop
it throws RandomAccessSource not opened
исключение. Если я закрою внутри цикла, мне придется снова создать внутри for-loop
. Не могли бы вы указать мне в правильном направлении.
спасибо для объяснения. Как я уже говорил, «pdfStamper.getUnderContent (страница, 0, 0);« Я не хочу добавлять целую страницу, но хочу добавить pdf-страницу в абсолютную позицию в существующем pdf. 'copy.addPage (copy.getImportedPage (reader, 1));' похоже на добавление всей страницы. исправь меня? –
Из вашего предыдущего вопроса и комментариев, похоже, что вы хотите добавить всю страницу. Это также происходит, когда вы используете 'addTemplate()', не так ли? Нет метода 'getUnderContent()', который принимает 3 параметра. –
'addTemplate (page, x, y)' имеет 'x' и' y' координаты. Я не могу использовать 'PdfCopy', если мне нужно разместить страницу в абсолютном положении в другом формате pdf, правильно? –