#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. Я исправил вашу трассировку стека, чтобы она соответствовала вашему комментарию. Однако без проверки самого файла я понятия не имею, как это проанализировать.