iText: успешно изменить размер одной страницы PDF, но не удается, если в документе PDF несколько страниц - PullRequest
1 голос
/ 24 августа 2011

Мне нужно изменить размер каждой страницы в моем pdf от буквы до размера Legal. Вот что я получил до сих пор

 public void resize (float x, float y, float scale) throws Exception {
    PdfReader reader = new PdfReader(pdfIn);
    Document doc = new Document(PageSize.LEGAL, 0, 0, 0, 0);
    PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(pdfOut));
    doc.open();
    PdfContentByte cb = writer.getDirectContent();
    for(int i=1; i<=reader.getNumberOfPages(); i++){
        PdfImportedPage page = writer.getImportedPage(reader, i);
        cb.addTemplate(page, scale, 0, 0, scale, x, y);
    }
    doc.close();
}

Несмотря на правильное изменение размера, выходной файл PDF содержит только 1 страницу. Любая помощь, пожалуйста?

1 Ответ

4 голосов
/ 25 августа 2011

Вот ответ. Мне нужно doc.newPage() в цикле, прочитайте Marc B комментарий на мой оригинальный вопрос для получения дополнительной информации

public void resize (float x, float y, float scale) throws Exception {
    PdfReader reader = new PdfReader(pdfIn);
    Document doc = new Document(PageSize.LEGAL, 0, 0, 0, 0);
    PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(pdfOut));
    doc.open();
    PdfContentByte cb = writer.getDirectContent();
    for(int i=1; i<=reader.getNumberOfPages(); i++){
        doc.newPage();
        PdfImportedPage page = writer.getImportedPage(reader, i);
        cb.addTemplate(page, scale, 0, 0, scale, x, y);
    }
    doc.close();
}
...