Я собираюсь преобразовать страницу содержимого моего PDF с использованием номеров страниц в качестве гиперссылки на якорь из-за нескольких косвенных ограничений и связь должна быть более динамичной.iTextPDF - Невозможно использовать writeSelectedRows() в таблице, где был вставлен привязку.
Я опустил код внешнего контура, но я пытаюсь создать гиперссылка записи на странице содержимого, используя следующее:
PdfPCell cell = new PdfPCell();
Paragraph p = new Paragraph();
Anchor anchor = new Anchor("page18 link");
anchor.setReference("#page18");
p.add(anchor);
cell.addElement(p);
table.addCell(cell);
Когда страница содержания сгенерирована (т.е. всех строк были добавлено), я затем использовать writeSelectedRows
на столе:
table.writeSelectedRows(0, -1, PageSize.A4.getWidth()*.05f, PageSize.A4.getHeight()-100, stamper.getOverContent(prevSectionPageCount+currentIndexPage+1));
на этом, я получаю следующее исключение:
Причина. Исключение: ошибка в StamperPDFPlugin. нуль java.lang.NullPointerException в com.itextpdf.text.pdf.internal.PdfAnnotationsImp.addPlainAnnotation (PdfAnnotationsImp.java:125) в com.itextpdf.text.pdf.PdfDocument.localGoto (PdfDocument.java:2115) на com.itextpdf.text.pdf.PdfDocument.writeLineToContent (PdfDocument.java:1612) на com.itextpdf.text.pdf.ColumnText.go (ColumnText.java:1025) на com.itextpdf.text.pdf. ColumnText.go (ColumnText.java:877) в com.itextpdf.text.pdf.ColumnText.goComposite (ColumnText.java:1381) в com.itextpdf.text.pdf.ColumnText.go (ColumnText.java:882) на com.itextpdf.text.pdf.ColumnText.go (ColumnText.java:877) в com.itextpdf.text.pdf.ColumnText.go (ColumnText. Java: 866) на com.itextpdf.text.pdf.PdfPRow.writeCells (PdfPRow.java:549) на com.itextpdf.text.pdf.PdfPTable.writeSelectedRows (PdfPTable.java:767) на com.itextpdf .text.pdf.PdfPTable.writeSelectedRows (PdfPTable.java:897) на com.itextpdf.text.pdf.PdfPTable.writeSelectedRows (PdfPTable.java:845) на com.itextpdf.text.pdf.PdfPTable.writeSelectedRows (PdfPTable.java:823) на com.ems.rendition.cts.plugin.StamperPDFPlugin.transform (StamperPDFPlugin.java:584) на com.ems.rendition.cts.plugin.StamperPDFPlugin.transform (StamperPDFPlugin.java : 328) по адресу com.ems .rendition.cts.plugin.StamperPDFPlugin.executeProfile (StamperPDFPlugin.java:171)
Увидев запись трассировки стека для localGoto
, я вынул линию anchor.setReference("#18.pdf");
и завершается нормально без ошибок (но, очевидно, с отсутствием гиперссылок - только обычный текст).
Что здесь общего не работает? Я добавляю якорь в ячейку неправильно?
Благодаря
Я пробовал это в iText 5.5.7, и я не мог воспроизвести проблему. Какую версию вы используете? –
Спасибо @BrunoLowagie - я использую 5.4.5. Я только что обновил свой проект, чтобы захватить 5.5.7 из репозитория. Я повторю проверку с использованием этой версии – Smittey
Я только что опубликовал пример, который я использовал для тестирования. –