小编Gra*_*ina的帖子

使用 iText 对 PDF 进行外部签名

首先,虽然我关注 StackOverflow 已经有一段时间了,但这是我第一次发帖,所以如果我做错了或不符合规则,请随时指出正确的方向。

我正在开发一个 PDF 数字签名应用程序,使用 iText5,在我准备好签名的 PDF 后,它依赖于外部服务来提供签名的散列。

iText 文档中所述,在第一阶段我准备了 PDF(在最终实现中,所有 PDF 都可能是多签名的,所以我使用附加模式),如下所示:

public static byte[] GetBytesToSign(string unsignedPdf, string tempPdf, string signatureFieldName, List<Org.BouncyCastle.X509.X509Certificate> certificateChain) {
        // we create a reader and a stamper
        using (PdfReader reader = new PdfReader(unsignedPdf)) {
            using (FileStream baos = File.OpenWrite(tempPdf)) {

                List<Org.BouncyCastle.X509.X509Certificate> chain = certificateChain;
                PdfStamper pdfStamper = PdfStamper.CreateSignature(reader, baos, '\0', null, true);
                sap                   = pdfStamper.SignatureAppearance;
                sap.Certificate       = certificateChain[0];
                sap.SetVisibleSignature(new iTextSharp.text.Rectangle(36, 720, 160, 780), 1, signatureFieldName);
                //sap.SetVisibleSignature(signatureFieldName);
                sap.SignDate          = DateTime.Now;
                PdfSignature dic …
Run Code Online (Sandbox Code Playgroud)

c# pdf itext digital-signature

6
推荐指数
1
解决办法
3159
查看次数

使用 iText 自定义签名外观

我正在尝试使用 iText(sharp,版本 5.5.13)创建自定义数字签名,用户可以从一组四个位置(顶部、底部、左侧和右侧)设置图像位置,如下所示:

权利:

图像权

左边:

左图

顶部:

图像顶部

底部:

图片底部

到目前为止,我尝试在签名的第 0 层上工作,但我认为我做错了,因为签名详细信息是在第 2 层中设置的。

然而,这只是设置图像位置的初始草图。在下面的代码中,我加载图像并将其放入一个块中(想法取自此示例

PdfTemplate pdfTemplate = sap.GetLayer(0);
ColumnText c1 = new ColumnText(pdfTemplate);
Image img = Image.GetInstance(signatureImage);
Phrase elements = new Phrase();
elements.Add(new Chunk(img, 0, 0, true));
//c1.SetSimpleColumn(elements, 0, 0, rectangle.Width, rectangle.Height / 4, 0, Element.ALIGN_CENTER); // align bottom
//c1.SetSimpleColumn(elements, 0, rectangle.Height / 2, rectangle.Width, rectangle.Height, 0, Element.ALIGN_CENTER); // align top
c1.SetSimpleColumn(elements, rectangle.Width/2, 0, rectangle.Width, rectangle.Height, 0, Element.ALIGN_CENTER); // align right
//c1.SetSimpleColumn(elements, 0, 0, rectangle.Width/2, rectangle.Height, 0, Element.ALIGN_CENTER); // …
Run Code Online (Sandbox Code Playgroud)

c# pdf itext digital-signature

2
推荐指数
1
解决办法
4022
查看次数

标签 统计

c# ×2

digital-signature ×2

itext ×2

pdf ×2