亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Java (IText API) 在不丟失數字簽名的情況下合并 PDF

如何使用 Java (IText API) 在不丟失數字簽名的情況下合并 PDF

呼喚遠方 2021-12-01 16:26:10
我有一個數字簽名的 pdf 文檔,我想使用 java itext api 將此數字簽名的 pdf 附加到另一個普通的 pdf,這可能嗎?我試圖將包含數字簽名的 pdf 附加到另一個。我能夠合并 pdf,但最終的 pdf 沒有在輸出 pdf 文件中保留數字簽名。是否可以 ?。
查看完整描述

3 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

正如其他人已經說過的,簽名背后的想法(至少是想法的主要部分)是確保文件沒有改變。另一方面,合并確實會更改文檔。因此,合并會破壞簽名。


但是,另一種方法是使另一個“普通”PDF 成為可移植的集合(一種帶有附件的特殊 PDF)并將簽名的 PDF 附加到該集合。


從集合中打開已簽名的 PDF 時,簽名將與原始簽名 PDF 中一樣完好無損。


創建可移植集合的示例代碼

您可以在 iText 站點上找到便攜式集合創建的示例:


public static final String DEST = "results/collections/portable_collection.pdf";

public static final String DATA = "resources/data/united_states.csv";

public static final String HELLO = "resources/pdfs/hello.pdf";

public static final String IMG = "resources/images/berlin2013.jpg";


public void createPdf(String dest) throws IOException, DocumentException {

    Document document = new Document();

    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));

    document.open();

    document.add(new Paragraph("Portable collection"));

    PdfCollection collection = new PdfCollection(PdfCollection.TILE);

    writer.setCollection(collection);

    PdfFileSpecification fileSpec = PdfFileSpecification.fileEmbedded(

            writer, DATA, "united_states.csv", null);

    writer.addFileAttachment("united_states.csv", fileSpec);

    fileSpec = PdfFileSpecification.fileEmbedded(

            writer, HELLO, "hello.pdf", null);

    writer.addFileAttachment("hello.pdf", fileSpec);

    fileSpec = PdfFileSpecification.fileEmbedded(

            writer, IMG, "berlin2013.jpg", null);

    writer.addFileAttachment("berlin2013.jpg", fileSpec);

    document.close();

}

(這里在網站上,在這里他們的GitHub)


運行該示例的結果是here。


(因為您使用的是 iText 標簽而不是 itext7 標簽,所以我假設您使用的是 iText 5.5.x 版。)


查看完整回答
反對 回復 2021-12-01
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

這是不可能的,這種數字簽名是專門為保護原始文檔不被以任何方式修改而設計的。

要合并和簽署這兩個文檔,您需要知道用于簽名的密鑰并為新的合并文檔再次生成簽名。


查看完整回答
反對 回復 2021-12-01
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

  1. 在 Adobe 中打開已簽名的 pdf。

  2. 打開打印對話框 ( CtrlP)

  3. 將打印機更改為“Microsoft Print to PDF”,然后打印。

  4. 新創建的 PDF 將具有簽名,并將作為合并/合并活動的普通 pdf。

http://img1.sycdn.imooc.com//61a731cc0001cbf608060435.jpg

注意:此方法將簽名文檔轉換為標準 pdf。結果顯示簽名信息,但底層數字簽名丟失。就我而言,原始簽名者理解這種區別。

創建摘要文件是我的目標。我將各種數字簽名以及其他相關文檔合并到一個摘要 pdf 中。原始的、數字簽名的文檔被存儲以備將來參考。我越來越相信,在保留底層數字簽名的同時,不可能將數字簽名的文檔合并成一個單一的摘要 pdf。

需要摘要數據包的用戶將從我建議的方法中受益。請記住,我的方法在原始數字簽名文檔可按需提供的范圍內仍然“合法有效”。


查看完整回答
反對 回復 2021-12-01
  • 3 回答
  • 0 關注
  • 369 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號