У меня возникла проблема при слиянии документов различной ширины с использованием iText.Объединить документы PDF различной ширины с помощью iText
Ниже приведен код, который я использую для слияния.
public static void doMerge(List<InputStream> list, OutputStream outputStream) throws Exception {
Rectangle pagesize = new Rectangle(1700f, 20f);
com.itextpdf.text.Document document = new com.itextpdf.text.Document(pagesize);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
document.setPageSize(pagesize);
com.itextpdf.text.pdf.PdfContentByte cb = writer.getDirectContent();
for (InputStream in : list){
PdfReader reader = new PdfReader(in);
for (int i = 1; i <= reader.getNumberOfPages(); i++){
document.newPage();
//import the page from source pdf
com.itextpdf.text.pdf.PdfImportedPage page = writer.getImportedPage(reader, i);
//calculate the y for merging it from top
float y = document.getPageSize().getHeight() - page.getHeight();
//add the page to the destination pdf
cb.addTemplate(page, 0, y);
}
reader.close();
in.close();
}
outputStream.flush();
document.close();
outputStream.close();
}
Первая страница pdf будет иметь ширину 14 дюймов и 13 дюймов высоты. Все остальные страницы документа всегда будут меньше.
Я хочу объединить все документы в одном документе.
Я не знаю, как установить ширину и высоту одного объединенного документа.
Я думаю, что Rectangle pagesize = new Rectangle(1700f, 20f);
должен это сделать, но это не значит, что это означает, если вы измените его на Rectangle pagesize = new Rectangle(1700f, 200f);
, документ не имеет никакого эффекта.
Прошу вас, пожалуйста, проинструктировать меня.
ли Вы хотите сохранить размеры исходных файлов PDF? В этом случае вы должны использовать 'PdfCopy' вместо этого. – mkl