少しごまかしたい場合は、リンクを使用できます... 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から直接署名を生成できれば間違いなく良いのですが、彼らのドキュメントを少し調べただけでは、iText自体の上に座っていたにもかかわらず、彼らのPDFカスタマイズ機能に自信が持てませんでした. . たまたま PDF を作成できるレポート ジェネレーターですが、期待しすぎてはいけません。`
編集: 特定の URL を探す必要がある場合は、PDF リファレンスのセクション「12.5.6.5 リンク注釈」を参照して
ください。 dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf