繁体   English   中英

如何在 PDF 文件中显示数字签名

[英]How to display a digital signature was signed in PDF file

我通过 iTextSharp 5.5.11.0 的 MakeSignature.SignDetached 签署了 PDF 文件。 在我将其转换为字符串并将其保存在数据库中之后。
我通过以下段落从 web 浏览器请求它,但无法显示数字签名。 谁能帮我解释一下?

//PDFSigned is string get from database
byte[] info = System.Convert.FromBase64String(PDFSigned);
PdfReader reader = new PdfReader(info);
Document doc = new Document(PageSize.A4, 25, 10, 25, 10);
PdfWriter writer = PdfWriter.GetInstance(doc, Response.OutputStream);
//open doc to create page of PDF
doc.Open();
PdfContentByte cb = writer.DirectContent;               
doc.NewPage();
PdfImportedPage page = writer.GetImportedPage(reader, reader.NumberOfPages);
cb.AddTemplate(page, 0, 0);
                    
doc.Close();
writer.CloseStream = false;
reader.Close();           

Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.End();

谢谢!

您的代码从数据库中删除 pdf 并丢弃除最后一页的 static 页面内容之外的所有内容。 这尤其会丢弃签名。

如果您实际上只是想让用户从数据库中下载任何 pdf 文件,您可以直接响应您通过 base64 从数据库中解码字符串获得的 PDF 字节。

那应该是这样的:

//PDFSigned is string get from database
byte[] info = System.Convert.FromBase64String(PDFSigned);

Response.OutputStream.Write(info, 0, info.Length);

Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.End();

(我不是很喜欢 .Net web 服务编程,所以细节可能不太理想。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM