3

iText で PdfSignatureAppearance を回転させようとすると大きな問題が発生します (たとえば、90 度)。MakeSignature.signDetached メソッドを使用して PDF に署名し、外観に独自のテキストと画像を設定しています。

ここにいくつかのコードがあります:

PdfReader reader = new PdfReader("my input file");
FileOutputStream fout = new FileOutputStream("my output file");

PdfStamper stamper = PdfStamper.createSignature(reader, fout, '\0');
PdfSignatureAppearance sap = stamper.getSignatureAppearance();

sap.setLayer2Text("Signed by someone");
sap.setAcro6Layers(true);
sap.setSignatureGraphic("my signature image", null));
sap.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION);

Rectangle pageSize = reader.getPageSize(1); //the page to sign: 1 is the 1st one

Rectangle rect = new Rectangle(llx, lly, urx, ury, rotation);
//llx, lly ... come from a GUI. They are working fine, but the rotation is not considered

sap.setVisibleSignature(rect, 1, null); //1 is the page to sign

MakeSignature.signDetached(sap, ...); //sign the document

私の問題は「回転」引数です。何を設定しても、テキストと画像が回転することはありません。iText コード (私は iText 5.3.2 を使用しています) を見ると、署名レイヤーの境界ボックスの回転引数が破棄されているため、この方法で回転を設定してもまったく効果がありません。

ここで質問: PdfSignatureAppearance および MakeSignature クラス全体を書き換えずに署名レイヤーを回転させる方法はありますか?

明確にするために、ドキュメントにデジタル署名するコードは正常に機能しています。私の唯一の問題は、署名のビジュアル レイヤーに関するものです。回転できません。

ありがとう。

4

2 に答える 2

1

現在、setRenderingMode()、setLayer2Text()、setSignatureGraphic() などの便利なメソッドを使用して署名を作成する場合、回転の設定はサポートされていません...

したがって、2 つのオプションがあります。 1. その機能を提供するよう当社に依頼する。デジタル署名に関するホワイト ペーパーの最初の 90 ページのドラフトが、ニュース レターの購読者にリリースされたばかりなので、これらのクラスに取り組んでいます。ただし、スマートカードでの署名、検証プロセスのリファクタリングなどは、現時点では絶対的な優先事項であるため、しばらく待たなければならない場合があります。2. getLayer() メソッドを使用して、任意の方向にコンテンツを描画します。背景の画像の場合は getLayer(0) になります。テキストの getLayer(2) 。

以前はレイヤー 1、3、4 もありましたが、これらは acro6Layers が true の場合にのみ機能することに注意してください。これはあなたの場合ですが、acro6Layers の使用は推奨されません (廃止されました: もう使用しないでください)。実際のところ、私はそのメソッドを今すぐ非推奨にし、デフォルトで値を false に設定します。

于 2012-08-24T11:53:43.887 に答える