在 C# 中使用 iTextSharp 在 PDF 中添加多个数字签名

2024-03-30

我已经使用 iTextSharp Dll 实现了数字签名,以使用单个签名对 PDF 文件进行签名。现在,我想在之前或已经进行数字签名的 PDF 中添加另一个数字签名,但在验证一个签名时出现错误。

如何在一份 PDF 中添加多个数字签名并验证所有签名。

我正在使用以下代码:

PdfReader reader = new PdfReader(fileName);
using (FileStream fout = new FileStream(SignedFileName, FileMode.Create, FileAccess.ReadWrite))
{
    // appearance
    PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0');
    PdfSignatureAppearance appearance = stamper.SignatureAppearance;
    //appearance.Reason = SignReason;
    //appearance.Location = SignLocation;
    appearance.SignDate = DateTime.Now.Date;
    appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(xPos, yPos, xPos + 200, yPos + 100), PageNo, null);//.IsInvisible

    // Custom text and background image
    appearance.Image = iTextSharp.text.Image.GetInstance(SignatureImg);
    appearance.ImageScale = 0.6f;
    appearance.Image.Alignment = 300;
    appearance.Acro6Layers = true;

    StringBuilder buf = new StringBuilder();
    buf.Append("Digitally Signed by ");
    String name = SignerName;

    buf.Append(name).Append('\n');
    buf.Append("Date: ").Append(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss zzz"));

    string text = buf.ToString();

    appearance.Layer2Text = text;

    //digital signature
    IExternalSignature es = new PrivateKeySignature(pk, "SHA-256");
    MakeSignature.SignDetached(appearance, es, new Org.BouncyCastle.X509.X509Certificate[] { pk12.GetCertificate(alias).Certificate }, null, null, null, 0, CryptoStandard.CMS);

    stamper.Close();

}

错误在这一行:

PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0');

将其更改为:

PdfStamper stamper = PdfStamper.CreateSignature(reader, fout, '\0', true);

解释:您没有以附加模式签署文档。

在进一步检查您的代码时,我发现您还添加了图像。这可能很棘手。以附加模式添加新签名解决了一个问题。添加额外的内容可能会导致额外的问题,具体取决于您使用的 iText 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中使用 iTextSharp 在 PDF 中添加多个数字签名 的相关文章

  • 使用自签名证书签署 PowerShell 脚本(并且不使用 makecert.exe)

    我正在尝试签署一份 ps1使用自签名证书 用例是我自己在私人开发站上编写的脚本 因此无需使用 或付费 真正的 CA 但是 无论我阅读多少关于证书生成和数字签名主题的指南 我似乎都无法使其正常工作 这是我到目前为止所取得的成就 Create
  • 使用 iText 某些 pdf 文件水印不显示

    我们公司使用 iText 在一些 pdf 表格上标记一些水印文本 不是图像 我注意到 95 的表格可以正确显示水印 大约 5 则不能 我测试了一下 复制了2个原始pdf文件 一个被标记为ok 另一个不ok 然后通过一个小程序进行测试 结果相
  • 无法使用 C# 在 asp.net 中使用 iTextSharp API 将 HTML 标记导出为 PDF?

    我有一个HTML标记有HTML Table and Images在里面 我在用iTextSharp API来转换HTML markup to PDF 但是 不幸的是iTextSharp无法导出HTML包含 PDF 图像和表格的标记 错误 找
  • 使用对称密钥 (AES -128) 签名和验证消息

    我想知道对称密钥可以用来签署消息吗 我们可以使用共享密钥进行加密 另外 当使用对称密钥进行签名时 JAVA 中可以使用什么 API 来加载密钥并对消息进行签名 如果我使用 java security 中的 Signature 它有一个 ap
  • 如何使用 Java 将 HTML 内容转换为 PDF 而不丢失格式?

    我有一些 HTML 内容 包括格式化标签 例如strong 图像等 在我的 Java 代码中 我想将此 HTML 内容转换为 PDF 文档 而不丢失 HTML 格式 有没有办法用 Java 来实现 使用 iText 或任何其他库 I use
  • 使用带有图像的 C# 代码生成 pdf 文件的大小限制是多少?

    我正在使用 Web 应用程序使用 C 代码生成 PDF 文件 PDF 文件包含 tiff 图像 如果包含图像的文件夹大小超过 1GB 则浏览器将自动关闭 使用 C 代码生成 PDF 文件的图像大小限制是多少 您问题的答案取决于三个参数 PD
  • itextsharp读取表[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用 itextsharp 创建了一个带有表格的 pdf 我找到了一个例子http itextsharp sourceforge n
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • iTextSharp。为什么单元格背景图像顺时针旋转90度?

    我希望使用单元格背景使用它的自然尺寸 如果它们不适合单元格 图像应该被裁剪 另一件事是 当我使用图案填充图像时 图像实际上旋转了 90 度 所以这个问题的主要问题是为什么图案图像在添加后会旋转我已经用谷歌搜索答案并阅读文档 但找不到任何解释
  • 使用 Itextsharp 读取本地化 PDF 文件

    我正在尝试使用 iTextSharp 阅读 PDF 文件 问题是当尝试阅读英语以外的 PDF 文件 例如印地语或阿拉伯语 时 它无法获取正确的单词 我想知道 我应该在系统上安装印地语或阿拉伯字体 还是需要对编码进行一些处理 ITextExt
  • 想要使用飞碟生成风景pdf

    我有下面给出的 html 当我使用飞碟将其转换为 PDF 时 它不适合 A4 纵向尺寸 如何生成横向pdf文件 table border 1 style color black font size 12px tr td a href a t
  • 将文字放在图像之上?

    我需要在 pdf 中插入图像 然后将文本放在图像顶部的特定坐标处 iTextSharp 可以做到这一点吗 是的你可以 关键是要设置你的iTextSharp text Image Alignment财产给iTextSharp text Ima
  • 将带有 itext 滚动条的表格的可编辑单元格设为只读

    请找到下面的代码 public class MakingFieldReadOnly implements PdfPCellEvent The resulting PDF public static final String RESULT1
  • 使用 iTextSharp 生成 QR 条形码

    我有一个值数组 arr 0 Sam arr 1 1452 arr 2 NY 我想用这些值生成 QR 条形码 我们正在使用 ITextSharp 任何帮助将不胜感激 我正在使用vb net 以下是如何使用 iText 创建条形码的一些示例 h
  • 使用 iText 和 Batik 生成 PDF

    我正在尝试将文本和 SVG 图形导出为 PDF 我发现 iText 和 batik 可以做到这一点 所以我尝试这样做 但每次我放入图表时 它都会变得非常小 我认为这可能与我的代码有关 所以我想我应该尝试 Vaadin 的示例代码 publi
  • 使用 /CCITTFaxDecode 过滤器从 PDF 中提取图像

    我有一个通过扫描软件生成的 pdf 文件 该 pdf 每页有 1 个 TIFF 图像 我想从每个页面中提取 TIFF 图像 我正在使用 iTextSharp 我已经成功找到了图像 并且可以从PdfReader GetStreamBytesR
  • 如何创建具有有效签名的预配置安装程序(MSI 或 EXE)?

    我们希望用户下载我们的 Windows 软件的预配置安装程序 预配置数据包含基于用户帐户数据的设置 定制将在 Linux 上运行的 Java 服务器中完成 我们需要对这些安装程序进行数字签名 不幸的是 由于安全政策的原因 我们无法在这些服务
  • iTextSharp 从一页模板高效批量生成 PDF

    我正在使用 ITextSharp 生成多页 PDF 每个页面都有相同的模板 问题是 PDF 的物理大小会随着模板的大小而增长 I HAVE to use 阿克罗菲尔德 我怎么能够reduce最终文件大小 这是 pdf 处理程序的代码片段 p
  • iText - 将内容添加到现有页面的底部

    我想向 PDF 文件的每一页添加一段文本 这个答案在SO https stackoverflow com questions 3335126 itext add content to existing pdf file工作正常 但是 文本被

随机推荐