iTextを使用して、PDF内の署名プレースホルダ内にテキストを配置しています。私たちは、AppearenceiText - PDFアプリケーション問題
PdfStamper stp = PdfStamper.createSignature(inputReader, os, '\0', tempFile2, true);
sap = stp.getSignatureAppearance();
sap.setVisibleSignature(placeholder);
sap.setRenderingMode(PdfSignatureAppearance.RenderingMode.DESCRIPTION);
sap.setCertificationLevel(PdfSignatureAppearance.NOT_CERTIFIED);
Calendar cal = Calendar.getInstance();
sap.setSignDate(cal);
sap.setLayer2Text(text+"\n"+cal.getTime().toString());
sap.setReason(text+"\n"+cal.getTime().toString()); `
すべてが正常に動作します署名を定義するには、このようなコードスニペットを使用しますが、私たちが期待するよう署名テキストは、すべての署名のプレースホルダエリアを満たしていないが、塗りつぶされた領域は、高さを持っているようですそれは利用可能なスペースのおよそ70%です。
結果として、特に署名テキストの長さが非常に長い場合、署名テキストがプレースホルダに収まらず、テキストが縞模様になります。充填された署名の
例:
IはPdfSignatureAppearenceクラスに見て、私は、この現象の原因であると呼び出されgetApperance()メソッドでこのコードスニペットを見つけたとき
sap.setRenderingMode(PdfSignatureAppearance.RenderingMode.DESCRIPTION);
が呼び出されている
else {
dataRect = new Rectangle(
MARGIN,
MARGIN,
rect.getWidth() - MARGIN,
rect.getHeight() * (1 - TOP_SECTION) - MARGIN);
}
私は、テキストが適切な余白を付けて使用可能なプレースホルダーの高さをすべて使用できると考えているので、その理由がありません。
この動作を回避する方法はありますか?
私はiText 5.4.2を使用していますが、新しいバージョンにも同じコードスニペットが含まれているため、動作は同じになると思います。
いつでも自分の外観を完全に構築できます。 – mkl
完全に構成された外観の例を教えてください。私はいくつかのテストを行いましたが、問題はLayer2Text属性を設定することで、私が投稿したコードスニペットが実行されており、その結果、常に上端に余白があることです。私は、署名にテキストだけを置くことでこのスペースを避けることができると信じていますが、PDFSignatureAppearence.javaのTOP_SECTION属性は最終的なものであり、変更することができないので、私たちが望むようにそれをカスタマイズすることは不可能です。 –
これはバグだと思います。 TOP_SECTIONはacro6layersレンダリングと接続されており、コードはacro6layerフラグの値を考慮しません。 –