在 JavaScript 中為簡報新增數位簽章
Contents
[
Hide
]
簡介
Digital certificate 用於建立受密碼保護的 PowerPoint 簡報,標示由特定組織或個人建立。可透過聯繫授權機構(證書授權中心)取得數位憑證。將數位憑證安裝至系統後,即可於「檔案 -> 資訊 -> 保護簡報」為簡報加入數位簽章:
簡報可能包含多個數位簽章。加入數位簽章後,PowerPoint 會顯示一條特殊訊息:
要簽署簡報或檢查簡報簽章的真偽,Aspose.Slides API 提供DigitalSignature類別、DigitalSignatureCollection類別和Presentation.getDigitalSignatures方法。目前僅支援 PPTX 格式的數位簽章。
從 PFX 憑證新增數位簽章
以下程式碼示範如何從 PFX 憑證新增數位簽章:
- 開啟 PFX 檔案並將 PFX 密碼傳遞給DigitalSignature物件。
- 將建立的簽章加入簡報物件。
// 開啟簡報檔案
var pres = new aspose.slides.Presentation();
try {
// 使用 PFX 檔案及密碼建立 DigitalSignature 物件
var signature = new aspose.slides.DigitalSignature("testsignature1.pfx", "testpass1");
// 為新數位簽章加入說明
signature.setComments("Aspose.Slides digital signing test.");
// 將數位簽章加入簡報
pres.getDigitalSignatures().add(signature);
// 儲存簡報
pres.save("SomePresentationSigned.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
pres.dispose();
}
現在可以檢查簡報是否已經數位簽章且未被修改:
// 開啟簡報
var pres = new aspose.slides.Presentation("SomePresentationSigned.pptx");
try {
if (pres.getDigitalSignatures().size() > 0) {
var allSignaturesAreValid = true;
console.log("Signatures used to sign the presentation: ");
// 檢查所有數位簽章是否有效
for (let i = 0; i < pres.getDigitalSignatures().size(); i++) {
let signature = pres.getDigitalSignatures().get_Item(i);
console.log((((signature.getComments() + ", ") + signature.getSignTime().toString()) + " -- ") + (signature.isValid() ? "VALID" : "INVALID"));
allSignaturesAreValid &= signature.isValid();
}
if (allSignaturesAreValid) {
console.log("Presentation is genuine, all signatures are valid.");
} else {
console.log("Presentation has been modified since signing.");
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
常見問題
我可以從檔案中移除現有的簽章嗎?
是的。數位簽章集合支援移除個別項目和全部清除;在儲存檔案後,簡報將不再有任何簽章。
簽署後檔案會變成「唯讀」嗎?
不會。簽章能維持完整性與作者身份,但不會阻止編輯。如需限制編輯,請結合「唯讀」或密碼。
簽章會在不同版本的 PowerPoint 中正確顯示嗎?
簽章是為 OOXML(PPTX)容器建立的。支援 OOXML 簽章的現代 PowerPoint 版本會正確顯示此類簽章的狀態。