2012-09-14 461 views
10

pdfboxライブラリを使用してpdfに署名しようとしています。 私は今立ち往生しており、本当に助けが必要です。pdfboxを使用してJavaでpdfに署名する方法

これは私のコードです:

private static void signPdf(PDDocument document) throws Exception 
{ 
    PDSignature sig = new PDSignature(); 
    sig.setFilter(COSName.ADOBE_PPKLITE); 
    sig.setSubFilter(COSName.ADBE_PKCS7_DETACHED); 
    sig.setByteRange(new int[] {'a','a','a','a'}); 
    sig.setContents(new byte[]{(byte) 23, (byte) 23, (byte) 23, (byte) 23}); 

    SignatureOptions options = new SignatureOptions(); 

    document.addSignature(sig, new SignatureInterface() { 
     public byte[] sign(InputStream content) 
       throws SignatureException, IOException  {   
      //this should be made MD5 checksum?   
      return new byte[]{(byte) 'a', (byte) 'a', (byte) 'a', (byte) 'a'}; 
     } 
    }, options); 
} 

その後、IAMのは私のPDFファイルを保存しますが、:) 1私はどこでcertyficateを添付しなければならない)符号方式が 2と呼ばれることはありませんことに気づきましたか?サイン方法で?

PDF:

/Type /Sig 
/Filter /Adobe.PPKLite 
/SubFilter /adbe.pkcs7.sha1 
/Contents <0000000000. a lot of zeros..000> 
/ByteRange [0 1000000000 1000000000 1000000000] 

私は私が何かを見逃していると思いますが、ドキュメントがファイルに署名する方法については何も言いません。

Tahnks in advance JC。ここで

@Ed

は、私は私のPDFファイルを保存する方法である:

public static void saveFile(COSDocument doc, String out) 
     throws IOException, COSVisitorException { 
    java.io.OutputStream os = null; 
    COSWriter writer = null; 
    try { 
     os = new java.io.FileOutputStream(out); 
     writer = new COSWriter(os); 
     writer.write(doc); 
    } finally { 
     if (os != null) { 
      os.close(); 
     } 
     if (writer != null) { 
      writer.close(); 
     } 
    } 
} 
+2

Sign In with PDFBoxは、低レベルでドキュメント化されていないようです。このホワイトペーパーを読むと、PDFのデジタル署名に関する詳細を理解できます。http://itextpdf.com/book/digitalsignatures –

+0

文書をどのように保存していますか?それがなぜsign()が呼び出されていないのかを理解するために必要なところです。 –

+0

@Ed上記の保存機能を追加しました –

答えて

6

リンクPDFBox-SignExample.zipは古くなっています。代わりに、このサンプルを使用してください:それは、よりよい文書化し、最新に保たれ

https://svn.apache.org/repos/asf/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/CreateSignature.java

+5

このリンクは質問に答えるかもしれませんが、回答の重要な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 –

+0

はい、これは良いでしょうが、この質問は「pdfbox signing」を検索する際のトップヒットの下にあり、多くの人々が署名したいと思っています。 pdfbox svn trunk上のリンクポイントなので、プロジェクトがgitに移動しなければ、リンクは一致します。そうでなければ、私はそれを更新します。だから本当に問題はない。 – ThomasCh

関連する問題