如何解决将数字签名字段插入到动态创建的 PDF 中
我正在尝试动态创建一个 PDF,用户可以通过编辑模板文本来控制它,然后从浏览器下载它。通过在数据库中存储 CLOB 来控制模板化文本。这一切都很好很容易,但我还需要在生成的 PDF 的底部添加一个数字/电子签名字段。我发现这方面的文档很少,但似乎 ColdFusion 这样做的方法是使用 cfpdf action="sign"
,文档以此为例:
<cfpdf action="sign"
source="#inputfilepath##inputfilename#"
destination="#signedfilepath##signedfilename#"
keystore="#certpath#cert.pfx" keystorepassword="certpass"
overwrite="true" pages="1" height="100"
width="100" position="100,100" author="false"
/>
ColdFusion 服务器密钥库的文件路径是“C:/Program Files/jdk-11.0.10/lib/security/cacerts/”。那里似乎没有证书文件。是否需要在命令行中使用 keytool
生成,如 here 所引用?
我的第二个选项(在 cfpdf
之后)似乎是通过 iText
实现 cfscript
库,因为 ColdFusion 是 Java 驱动的并在 JVM 上运行。这是我能够创建的模型,它可能会导致我正在寻找的东西:
<cfscript>
resource = CreateObject("java","java.io.FileInputStream");
resource.init("C:\path\OriginalLetter.pdf");
os = CreateObject("java","java.io.FileOutputStream");
os.init("C:\path\NewLetter.pdf");
annotation = CreateObject("java","com.itextpdf.text.pdf.PdfAnnotation");
annotation.init();
reader = CreateObject("java","com.itextpdf.text.pdf.PdfReader");
reader.init(resource);
stamper = CreateObject("java","com.itextpdf.text.pdf.pdfstamper");
stamper.init(reader,os);
FormField = CreateObject("java","com.itextpdf.text.pdf.PdfFormField");
FormField.init();
field = FormField.createSignature(stamper.getWriter());
field.setFieldName("Signature");
field.setWidget(new Rectangle(30,830,170,770),annotation.HIGHLIGHT_NONE);
stamper.addAnnotation(field,1);
stamper.close();
</cfscript>
但似乎不确定这样的实现是否对 ColdFusion 有用。
再说一次,我在这方面似乎找不到什么,可以从在 ColdFusion 管理或什至在类似问题上有经验的人那里得到一些指导。我的备份计划是将实际模板 PDF 文件(底部已经有签名块)放在服务器文件系统上,然后用户可以简单地从那里编辑文本,签名字段将保留在底部。为了更好地解释这一点,我从数据库中使用的模板化文本基于此文件的内容;只是我无法将 PDF 数字签名字段之类的内容存储为文本。更具体地说,我使用 HTML 来生成内容,以便更好地格式化。用户可以通过浏览器上的 ckeditor
编辑文本,但同样,简单的 input
不会在 PDF 上呈现为签名字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。