Если вы хотите немного обмануть, вы можете использовать ссылку ... которую BIRT поддерживает в соответствии с моим небольшим погружением в их документы прямо сейчас.
Ссылка является аннотацией. К сожалению, iText не поддерживает проверку аннотаций на высоком уровне, а только генерирует их, поэтому вам придется использовать низкоуровневые вызовы объектов.
Код для его извлечения может выглядеть примерно так:
// getPageN is looking for a page number, not a page index
PdfDictionary lastPageDict = myReader.getPageN(myReader.getNumberOfPages());
PdfArray annotations = lastPageDict.getAsArray( PdfName.ANNOTS );
PdfArray linkRect = null;
if (annotations != null) {
int numAnnots = annotations.size();
for (int i = 0; i < numAnnots; ++i) {
PdfDictionary annotDict = annotations.getAsDict( i );
if (annotDict == null)
continue; // it'll never happen, unless you're dealing with a Really Messed Up PDF.
if (PdfName.LINK.equals( annotDict.getAsName( PdfName.SUBTYPE ) )) {
// if this isn't the only link on the last page, you'll have to check the URL, which
// is a tad more work.
linkRect = annotDict.getAsArray( PdfName.RECT );
// a little sanity check here wouldn't hurt, but I have yet to come across a PDF
// that was THAT screwed up, and I've seen some Really Messed Up PDFs over the years.
// and kill the link, it's just there for a placeholder anyway.
// iText doesn't maintain any extra info on links, so no need for other calls.
annotations.remove( i );
break;
}
}
}
if (linkRect != null) {
// linkRect is an array, thusly: [ llx, lly, urx, ury ].
// you could use floats instead, but I wouldn't go with integers.
double llx = linkRect.getAsNumber( 0 ).getDoubleValue();
double lly = linkRect.getAsNumber( 1 ).getDoubleValue();
double urx = linkRect.getAsNumber( 2 ).getDoubleValue();
double ury = linkRect.getAsNumber( 3 ).getDoubleValue();
// make your signature
magic();
}
Если BIRT генерирует некоторый текст в содержимом страницы под ссылкой для его визуального представления, это только незначительная проблема. Ваша подпись должна полностью покрыть это.
Вам определенно лучше, если вы сможете сгенерировать подпись непосредственно из BIRT, но мой небольшой осмотр их документов не совсем вселил в меня уверенность в их возможностях настройки PDF ... несмотря на то, что я был на вершине Сами по себе. Это генератор отчетов, который может создавать PDF-файлы ... Я не должен ожидать, что слишком много.
`
Редактировать: Если вам нужно найти конкретный URL, вы можете обратиться к разделу «12.5.6.5 Аннотации ссылок» в PDF-справочнике, который можно найти здесь:
http://www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf