При попытке создать новый com. aspose. pdf. Document(contentFilePath), проштампованный pdf вылетает с исключением

#java #pdf #itext #aspose

#java #PDF #itext #aspose

Вопрос:

Есть в PDF версии 1.2, штамп ставится, ТОЛЬКО если вы создаете PdfStamper в новой версии (Новый PdfStamper (reader, FOS », true) — последний параметр отвечает за новую версию), но при попытке создать новый com.aspose.PDF.Документ (contentFilePath) в прошитом формате PDF завершает работу:

 Caused by: java.lang.NullPointerException
 at com.aspose.pdf.internal.l1if.l1v.<init>(Unknown Source)
 at com.aspose.pdf.internal.l6if.lf.lf(Unknown Source)
 at com.aspose.pdf.internal.l0h.l0p.lj(Unknown Source)
 at com.aspose.pdf.PageCollection.<init>(Unknown Source)
 at com.aspose.pdf.ADocument.l1h(Unknown Source)
 at com.aspose.pdf.ADocument.lI(Unknown Source)
 at com.aspose.pdf.ADocument.<init>(Unknown Source)
 at com.aspose.pdf.Document.<init>(Unknown Source)
 

при отладке я вижу ошибку suppressedException UnmodifiableRandomAccesslist в коллекции страниц

К сожалению, я не могу прикрепить PDF-файл из-за конфиденциальных данных в нем. Aspose 20.10, Itext 5.0.5.

 PdfStamper stamper = null;
FileOutputStream fos = null;
PdfReader reader = null;
String contentFilePathOut = "C:\DISTR\out.pdf";
try {
    FileInputStream fis = new FileInputStream("C:\DISTR\source.pdf");
    reader = new PdfReader(fis);
    fos = new FileOutputStream(contentFilePathOut, true);
    stamper = new PdfStamper(reader, fos, '', true);
    PdfContentByte canvas = stamper.getOverContent(1);
    ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase("Hello people!"), 250, 750, 0);
} finally {
    try {
        if (stamper != null) {
            stamper.close();
        }
    } catch (Exception ignore) {
    }

    try {
        if (fos != null) {
            fos.close();
        }
    } catch (Exception ignore) {

    }
    try {
        if (reader != null) {
            reader.close();
        }
    } catch (Exception ignore) {
    }
}
try {
    com.aspose.pdf.Document pdf = new com.aspose.pdf.Document(contentFilePathOut);
} catch (Exception e) {
    throw new ServiceException(e);
}
 

Комментарии:

1. Вызвано: java.lang. Исключение NullPointerException в com.aspose.pdf.internal.l1if.l1v.<init> (неизвестный источник) в com.aspose.pdf.internal.l6if.lf.lf(неизвестный источник) в com.aspose.pdf.internal.l0h.l0p.lj(неизвестный источник) в com.aspose.pdf.internal.l0h.l0p.lj(неизвестный источник).aspose.pdf.PageCollection . <инициализация> (неизвестный источник) в com.aspose.pdf. ADocument.l1h(неизвестный источник) в com.aspose.pdf. ADocument . lI(неизвестный источник) в com.aspose.pdf. ADocument . <инициализация> (неизвестный источник) в com.aspose.pdf.Document. <инициализация> (неизвестный источник)

2. Вы проверили, создает ли ваш код iText перед использованием Aspose правильный файл? В конце концов, вы явно игнорируете все исключения, которые этот код может вызвать во время закрытия…

3. @mkl Я добавил создание исключения ошибки вместо его игнорирования — ошибок нет

4. Создается новый файл pdf, открывается Acrobat и проштамповывается

5. Я исправил вашу трассировку стека, чтобы она соответствовала вашему комментарию. Однако без проверки самого файла я понятия не имею, как это проанализировать.