iTextSharp 字段重命名不适用于合并

2024-01-21

这是后续另一个问题 https://stackoverflow.com/questions/44003264/itextsharp-merge-method-produces-empy-form-fields-now-duplicate-values-with-fie我之前有过,在 PDF 文件与表单字段成功合并后,如果确实出现了具有相同名称的字段,那么它们不会从原始文档中获取不同的值,看起来像具有相同名称的字段将其值传播到以下具有相同名称的字段。

这是在两个单独的函数中合并和重命名的代码:

public byte[] MergeFiles(IList<DBForms> forms)
{
    if (forms.Count < 1)
        return null;

    System.IO.MemoryStream msOutput = new System.IO.MemoryStream();
    iTextSharp.text.Document document = new iTextSharp.text.Document();
    PdfCopy copy = new PdfCopy(document, msOutput);
    copy.SetMergeFields();
    document.Open();
    List<PdfReader> readers = new List<PdfReader>();

    foreach (var docData in forms.Where(d => d.Status != 2))
    {
        PdfReader reader = new PdfReader(FlattenRenamePdfForm(docData.DocumentFile));
        readers.Add(reader);
        copy.AddDocument(reader);

    }
    document.Close();

    foreach (PdfReader reader in readers)
    {
        reader.Close();
    }

    return msOutput.ToArray();
}

private byte[] FlattenRenamePdfForm(byte[] oldDoc)
{
    PdfReader reader = new PdfReader(oldDoc);
    using (MemoryStream ms = new MemoryStream())
    {
        using (PdfStamper stamper = new PdfStamper(reader, ms))
        {
            ICollection<string> keys = stamper.AcroFields.Fields.Keys;

            List<string> keysCopy = new List<string>();

            foreach (var key in keys)
            {
                keysCopy.Add(key);
            }

            foreach (var key in keysCopy)
            {
                stamper.AcroFields.SetFieldProperty(key, "setfflags", PdfFormField.FF_READ_ONLY, null);
                stamper.AcroFields.RenameField(key, String.Format("{0}{1}", key, new Guid()));

            }

            stamper.Close();
        }
        reader.Close();
        return ms.ToArray();
    }
}

这是在使用最新的iTextSharp库5.5.10时完成的,测试是在w8Ben文档上完成的

这是文件

First

Second

Merged


None

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

iTextSharp 字段重命名不适用于合并 的相关文章

  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 如何禁用特定控件的默认皮肤?

    是否可以有一个不使用 skin 文件中指定的默认外观的控件 我有一个我要做的控件not想要应用默认皮肤 在大多数 ASP NET 书籍中都可以找到此解决方案 使用 EnableTheming
  • 代码隐藏中的 .NET / C# 字符串引用未加载更新值

    我似乎遇到了一个奇怪的问题 即字符串引用没有加载更新的值 简而言之 我替换了一个包含一堆页面标题 例如 HTML 页面标题 的 DLL 文件 App Code dll 但从其他 DLL 引用时 这些值并未更新 以下是示例页面代码隐藏中的代码
  • WPF TreeView,在PreviewMouseDown事件中获取TreeViewItem

    如何确定在 PreviewMouseDown 事件中单击的 TreeViewItem 以下似乎有效 private void myTreeView PreviewMouseDown object sender MouseButtonEven
  • 使用反射输入计算 CRC64 的最有效方法

    我需要使用计算 CRC 64这个设置 https i stack imgur com Tdj7Z png进入这个精彩的网站 http www sunshine2k de coding javascript crc crc js html h
  • MySQL 锁等待超时

    我有错误Lock wait timeout exceeded try restarting transaction 出现这种情况的原因是什么以及如何解决 供参考 innodb lock wait timeout 100在 MySQL 配置文
  • 是否有 FMX 函数可以在运行时设置 TImage 的透明颜色?

    我在 FMX FireMonkey 的表单上有一个 TImage 我想在运行时将位图加载到 TImage 中 其中位图应该具有由位图中第一个像素的颜色定义的透明背景 该颜色可能因位图而异 我知道如何在设计时通过使用 TImage 的 Mul
  • 将变量从伏特发送到自定义函数

    我创建了一个可以从 volt 访问的自定义函数 该函数似乎工作正常 但我无法设法将变量发送到该函数 它将变量作为文本而不是其值发送 树枝功能 volt gt getCompiler gt addFunction getusergroup f
  • 通过WIFI认证后User.Identity.Name为空

    我正在使用 WIFI 登录我的应用程序 一切似乎都很好 日志记录 重定向到网站等 但是当我尝试使用User Identity Name在我的鳕鱼异常被抛出 User为空 有什么想法我做错了吗 我在 VS 2012 上工作 web confi
  • xsl-fo:并行的两份报告,一份在奇数页,另一份在偶数页

    我想生成一个 PDF 其中一个内容流在奇数页 另一个内容流在偶数页 因此当您双面打印 PDF 时 您有一个模板可以在偶数页上写笔记 这是我所拥有的 但它不起作用
  • 使用 Hibernate 管理多租户应用程序中的连接池

    我正在尝试使用单独的架构方法设置多租户应用程序 我正在使用 JPA 和 Hibernate 4 实现 就像 说的ben75 https stackoverflow com users 1818045 ben75在这个非常有用的thread
  • 在 C 中对 int 进行符号扩展

    所以我在获取 int 字段然后对其进行符号扩展时遇到了一些麻烦 我有一个获取 int 字段的方法 getField int value int hi int lo Value 是我从中获取字段的 int hi 和 lo 是字段的大小 所以我
  • 选择所有具有 png 背景图像的 div

    我怎样才能在 jQuery 中选择所有div是有background image url somepath somename png 以他们的风格 尝试添加自定义选择器 document ready function extend expr
  • 如何将 Prop 传递给导航屏幕组件 - React Native

    我对 React Native 还很陌生 我在 App js 文件中创建了一个抽屉导航器 我的导航组件之一是一个名为登录界面 我正在尝试将道具传递给登录界面当用户导航到它时显示 App js 导航器 const Tab createMate
  • 从 .NET 应用程序引用 Google 的 V8 引擎

    我正在构建一个 NET 3 5 应用程序 并且需要在服务器上评估 JS 代码 基本上是用户提供的规则集 可以在浏览器或服务器上工作 托管 JS 不是一个选项 因为 JS 代码将在运行时提供 Aptana 的 Jaxer 也不是一个选择 因此
  • 操作无法完成。不允许操作

    我的 iPhone 应用程序出现了非常奇怪的问题 我们有一个应用程序已获得批准并在应用程序商店销售 它包含下载一些数据库更新的功能 该更新通过 HTTP 以 ZIP 形式提供 问题是我无法保存这个下载的 ZIP 因为我收到 操作无法完成 操
  • 相当于 Java 的 Timer 的阻塞

    是否有一个相当于阻塞java util Timer班级 我正在寻找将阻止创建计时器的线程的解决方案 以下代码是非阻塞的 After timer 输出立即打印 new Timer schedule new TimerTask Override
  • Rails 3.0 中是否可以有 js.erb 部分?

    如果可能的话 我如何从另一个 js erb 文件运行它 努力保持干燥 编辑 说明 我在 search index js erb 中有一个 js erb 例程 我想在 location index js erb 中使用相同的例程 因此 我想知
  • 当在 JavaFX 中指定字体大小时,如何修复将 fontawesomefx 图标更改为矩形的问题?

    我正在使用 fontawesomefx 8 9 并且我已将其字体大小设置为 15px 使用 glyph icon fx font size 15px 然后我创建了一些 FontAwesomeIconViews 并将它们嵌入到一些按钮 Jav
  • C中int默认是long int吗?

    为什么我发现 int 和 long int 的大小显示为 4 个字节 难道int默认是long int吗 sizeof short lt sizeof int lt sizeof long 这就是您可以信赖的一切 其余的完全取决于实施 在早
  • iTextSharp 字段重命名不适用于合并

    这是后续另一个问题 https stackoverflow com questions 44003264 itextsharp merge method produces empy form fields now duplicate val