Csharp/C#教程:c#itextsharp如何获取数字签名图像分享


c#itextsharp如何获取数字签名图像

是否可以使用c#代码使用itextsharp在pdf文件中获取任何数字签名的图像?

PdfReader pdf = new PdfReader("location.pdf"); AcroFields acroFields = pdf.AcroFields; List names = acroFields.GetSignatureNames(); foreach (var name in names) { PdfDictionary dict = acroFields.GetSignatureDictionary(name); } 

通过这些简单的线条,我可以获得签名词典,但是从这个对象我无法获得图像的内容。 有人可以帮忙吗?

我回答了我自己的问题……如果它对其他人有用,我会这样做。 我发现了一个Java类来做我想要的东西,我用C#翻译它。

 class XyzmoSignatureDataExtractor { private PdfReader reader; public XyzmoSignatureDataExtractor(PdfReader reader) { this.reader = reader; } public PdfImageObject extractImage(String signatureName) { MyImageRenderListener listener = new MyImageRenderListener(); PdfDictionary sigFieldDic = reader.AcroFields.GetFieldItem(signatureName).GetMerged(0); PdfDictionary appearancesDic = sigFieldDic.GetAsDict(PdfName.AP); PdfStream normalAppearance = appearancesDic.GetAsStream(PdfName.N); PdfDictionary resourcesDic = normalAppearance.GetAsDict(PdfName.RESOURCES); PdfContentStreamProcessor processor = new PdfContentStreamProcessor(listener); processor.ProcessContent(ContentByteUtils.GetContentBytesFromContentObject(normalAppearance), resourcesDic); return listener.image; } class MyImageRenderListener : IRenderListener { public void BeginTextBlock() { } public void EndTextBlock() { } public void RenderImage(ImageRenderInfo renderInfo) { try { image = renderInfo.GetImage(); } catch (Exception e) { throw new Exception("Failure retrieving image", e); } } public void RenderText(TextRenderInfo renderInfo) { } public PdfImageObject image = null; } } 

要使用该类并保存图像,我只需这样做:

上述就是C#学习教程:c#itextsharp如何获取数字签名图像分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 PdfReader reader = new PdfReader("location.pdf"); XyzmoSignatureDataExtractor extractor = new XyzmoSignatureDataExtractor(reader); AcroFields acroFields = reader.AcroFields; foreach (string name in acroFields.GetSignatureNames()) { PdfImageObject image = extractor.extractImage(name); var _image = image.GetDrawingImage(); string file_name = "sig." + image.GetFileType(); _image.Save(file_name); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1038958.html

(0)
上一篇 2022年1月26日
下一篇 2022年1月26日

精彩推荐