在nodejs中从PDF获取DocTimeStamped

问题描述 投票:0回答:1

enter image description here 在服务器中,该 pdf 带有时间戳。我想知道最后一次检查的时间。这是文档时间戳。我的代码适用于普通签名,但不适用于文档时间戳。

这是我获得正常签名的代码:

let { PDFDocument, rgb, PDFDict, PDFName, PDFHexString, PDFString } = require('pdf-lib');

const extractSignatureInfo = async (pdfBuf) => {
    console.log('extractSignatureInfo');
    // Load the signed PDF document
    const pdfDoc = await PDFDocument.load(pdfBuf);

    const signatureInfoList = [];
    
    // Iterate through all fields in the document
    const acroFormDict = pdfDoc.context.lookup(pdfDoc.catalog.get(PDFName.of('AcroForm')));
    
    if (acroFormDict){
        const fieldsArray = acroFormDict.get(PDFName.of('Fields')).asArray();

        for (const fieldRef of fieldsArray) {
            const field = pdfDoc.context.lookup(fieldRef); // Use lookup to get the actual PDFRef
            const fieldType = field.get(PDFName.of('FT'))?.asString();

            if (fieldType === '/Sig') {
                const signatureDictRef = field.get(PDFName.of('V'));
                const signatureDict = pdfDoc.context.lookup(signatureDictRef); // Use lookup for the signatureDict
        
                if (signatureDict instanceof PDFDict) {
                    const signatureInfo = {
                        fieldName: field.get(PDFName.of('T'))?.asString(),
                        certificateName: signatureDict.get(PDFName.of('Name'))?.toString(),
                        signingTime: signatureDict.get(PDFName.of('M'))?.toString(),
                    };

                    let reason = signatureDict.get(PDFName.of('Reason'))
                    if (reason instanceof PDFString) {
                        reason = decodeUTF16BE(reason) || reason.asString('utf-8');
                    }
                    signatureInfo.reason = reason;
        
                    signatureInfoList.push(signatureInfo);
                }
            }
        }
    }
    

    return signatureInfoList;
}

node.js pdf timestamp
1个回答
0
投票

没有上次检查获取的时间戳。

这是您在验证计算机上运行任何应用程序的时间,因此无法在 PDF 中或通过 PDF 访问它,它不知道它将在哪台计算机上运行。

© www.soinside.com 2019 - 2024. All rights reserved.