estaba buscando una solución para firmar digitalmente un pdf con un certificado autofirmado y encontré un video en youtube que explica el proceso usando las bibliotecas pdf-lib y node-signpdf. Sin embargo, después de seguir las instrucciones, no funcionó según lo previsto y se produjo un problema:
repositorio: https://github.com/RichardBray/pdf_sign
Demostración (video de 8 minutos): https://www.youtube.com/watch?v=OFZK5lc70OI&list=PLXUfmx2SIgyICZP-rA84Sle_ghq30W89N&index=4&t=1s
import SignPDF from "./SignPDF"; import fs from "node:fs"; import path from "node:path"; async function main() { const pdfBuffer = new SignPDF( path.resolve("test_assets/minions.pdf"), path.resolve("test_assets/certificate.p12") ); const signedDocs = await pdfBuffer.signPDF(); const randomNumber = Math.floor(Math.random() * 5000); const pdfName = `./exports/exported_file_${randomNumber}.pdf`; fs.writeFileSync(pdfName, signedDocs); console.log(`New Signed PDF created called: ${pdfName}`); } main();
> pdf_sign@1.0.0 start > npm run build && node dist/index.js > pdf_sign@1.0.0 build > ./node_modules/.bin/babel ./src -d ./dist '.' is not recognized as an internal command or external, an executable program or a batch file.
Uncaught SyntaxError c:\\Users\\ACER\\Documents\\GitHub\\pdf_sign\\src\\index.js:1 import SignPDF from "./SignPDF"; ^^^^^^ SyntaxError: Cannot use import statement outside a module at compileFunction (undefined:352:18) at wrapSafe (undefined:1031:15) at Module.\_compile (undefined:1065:27) at Module.\_extensions..js (undefined:1153:10) at Module.load (undefined:981:32) at Module.\_load (undefined:822:12) at executeUserEntryPoint (undefined:81:12) at \<anonymous\> (undefined:17:47)
parece que el problema está relacionado con el sistema operativo. De hecho, el código funciona bien en el sistema operativo Linux, pero tiene algunos problemas con el sistema operativo Windows relacionados con el comando de importación. Para el sistema operativo Windows, reemplazar los comandos "importar" con los comandos "requerir" resuelve el problema.
ANTES DE:
import SignPDF from "./SignPDF"; import fs from "node:fs"; import path from "node:path";
DESPUÉS :
const SignPDF = require("./SignPDF"); const fs = require("node:fs"); const path = require("node:path");
Editar: siempre que se encuentren importaciones en el proyecto, deben reemplazarse con comandos require. https://jobs.czconsultants.com/utils/convert-imports-to-require-online/0 este sitio web ayuda a convertir múltiples comandos rápidamente