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();
}
}
}
Sign In with PDFBoxは、低レベルでドキュメント化されていないようです。このホワイトペーパーを読むと、PDFのデジタル署名に関する詳細を理解できます。http://itextpdf.com/book/digitalsignatures –
文書をどのように保存していますか?それがなぜsign()が呼び出されていないのかを理解するために必要なところです。 –
@Ed上記の保存機能を追加しました –