iText 在 sandbox.stamper.SuperImpose.java 中设置创建日期和修改日期

2023-12-14

我正在尝试在中设置创建日期和修改日期将一个 PDF 的内容叠加到另一个 PDF 中例如 sandbox.stamper.SuperImpose.java。

原则(我认为)很明确:

use getInfo()& 然后做

info.put(PdfName.CREATIONDATE, new PdfDate(calendar));

or

info.put("CreationDate", "D:20160508090344+02'00'");

取决于是否HashMap<String, String>或 PdfDictionary 可用。

但是哪里?我似乎不太能找到插入代码的正确位置...我在覆盖原始标题属性时也遇到了麻烦。


请查看以下文件状态.pdf and 状态元数据.pdf.

前者的元数据如下所示:

enter image description here

后者的元数据如下所示:

enter image description here

您可以看到标题和日期已更改。

现在看一下更改元数据示例了解这是如何完成的:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    Map info = reader.getInfo();
    info.put("Title", "New title");
    info.put("CreationDate", new PdfDate().toString());
    stamper.setMoreInfo(info);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    XmpWriter xmp = new XmpWriter(baos, info);
    xmp.close();
    stamper.setXmpMetadata(baos.toByteArray());
    stamper.close();
    reader.close();
}

更改标题很简单:

info.put("Title", "New title");

更改创建日期需要使用特定的日期格式,这就是我使用PdfDate object:

info.put("CreationDate", new PdfDate().toString());

旧版本的 iText 可能不允许更改创建日期,因此请确保您使用的是最新的 iText 版本。

修改日期会自动更改。使用当前日期,您无法覆盖它。

以下行仅更改 Info 字典中的元数据:

Map info = reader.getInfo();
info.put("Title", "New title");
info.put("CreationDate", new PdfDate().toString());
stamper.setMoreInfo(info);

如果您使用旧版本的 Adob​​e Reader,您将看到更改,但较新的 PDF 查看器会优先选择存储在 XMP 元数据流中的元数据。这意味着您还必须创建一个新的 XMP 流:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmpWriter xmp = new XmpWriter(baos, info);
xmp.close();
stamper.setXmpMetadata(baos.toByteArray());

当您说您已更改信息字典中的标题并且您没有看到更改时,您也应该尝试更改 XMP 元数据。在某些情况下(例如,当您需要满足 PDF/A 合规性时),具有两组相互矛盾的不同元数据的 PDF 被视为无效 PDF。

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

iText 在 sandbox.stamper.SuperImpose.java 中设置创建日期和修改日期 的相关文章

  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • 如何从 pdf C# 中获取具有特定颜色的文本

    我必须将 pdf 文件中的数据放入特定的数据库结构中 这要求我能够从 pdf 文件中获取某些数据 由于 pdf 没有任何标签等 我想知道是否可以根据颜色获取文本 比如说我想要所有的红色文本 或者我想要文档中的所有斜体文本 这在 C 中可能吗
  • 合并两个(或更多)PDF

    背景 我需要为我的销售人员提供每周报告包 该包包含几个 5 10 个水晶报告 Problem 我想允许用户运行所有报告并且只运行单个报告 我想我可以通过创建报告然后执行以下操作来做到这一点 List
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • iTextSharp。为什么单元格背景图像顺时针旋转90度?

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

    我正在尝试将 pdf 托管在隐藏的 iframe 中 但在 Chrome 中呈现较小的问题时遇到问题 我必须刷新页面才能正确加载 JSfiddle 在这里https jsfiddle net 464xo40f https jsfiddle
  • PostScript - 超链接表,但只有一个链接用于所有链接

    要求是在 pdf 中显示一些文本 该文本下面有一个指向站点 pdf 等的超链接 类似于 HTML 您将在其中看到请单击此处 然后在此处打开一个链接 我正在使用 PlanetPress 创建 pdf 它基本上是添加了维生素和铁的 PostSc
  • 将文字放在图像之上?

    我需要在 pdf 中插入图像 然后将文本放在图像顶部的特定坐标处 iTextSharp 可以做到这一点吗 是的你可以 关键是要设置你的iTextSharp text Image Alignment财产给iTextSharp text Ima
  • 设置 8 1/2" x 12" itext 页面尺寸 [重复]

    这个问题在这里已经有答案了 我正在使用 itext PDF 我需要将 PDF 文档大小设置为德国标准 Fanfold 8 1 2 x 12 我不知道如何在 Itext 文档中设置英寸 Now I can set paper size as
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • RowSpan 在 iTextSharp 中不起作用?

    我正在尝试将 Html 转换为 PDF 我正在使用 iTextSharp 我发现iTextSharp对CSS的支持不太好 事实上我认为 HtmlWorker 线程并不支持这一切 让我的问题更加复杂的是 iTextSharp 似乎也不支持 R
  • GhostScript PDF 合并(丢失可编辑字段)

    我正在使用 GhostScript 将 PDF 合并为一个 PDF 其中一份 PDF 具有我在 Adob e Acrobat Pro 9 中创建的文本框字段 可编辑字段 当我使用 GhostScript 合并这两个 PDF 时 我丢失了文本
  • 报告实验室性能低下

    我在用着报告实验室将一些大型图书馆 俄语纯文本 转换为 pdf 格式 当原始文件足够小 例如 大约 10 50 kB 时 它可以正常工作 但是 如果我尝试转换大文本 超过 500kB 则需要花费大量时间来进行报告实验室 有谁知道可能是什么问
  • 在 iOS 中,如何以编程方式填写 pdf 表单字段?

    我需要获取一个现有的 pdf 文件 并以编程方式填写带有文本的表单字段列表 然后保存 pdf 而不将其显示给用户 例如 如果 pdf 文件包含名为 LastName 和 FirstName 的字段 我想将 FirstName 的值设置为 L
  • 使用 GhostScript 获取页面大小

    是否可以使用 GhostScript 获取页面大小 例如从 PDF 文档页面 我见过 bbox 设备 但它返回的是边界框 每页不同 而不是 PDF 页面的 TrimBox 或 CropBox 看http www prePressure co
  • 将固定文档/XPS 打印为 PDF,而不显示文件保存对话框

    我有一个FixedDocument我允许用户在 WPF GUI 中预览 然后打印到纸张上 而不显示任何 Windows 打印对话框 如下所示 private void Print PrintQueueCollection printQueu
  • Wkhtmltopdf 每页右侧的垂直文本

    下面是使用 wkhtmltopdf 生成的 PDF 示例 我需要在每一页的右书脊上生成文本 我尝试将其添加到标题代码中 似乎会剪辑 PDF 的正文 我正在使用 wkhtmltopdf 的页眉和页脚参数 不太确定如何或是否可以在每个页面的右侧
  • 通过 PDFBox 访问图像的“替代文本”

    有没有某种方法可以使用提取特定图像的 替代文本 PDFBox http pdfbox apache org 我有一个 PDF 文件 如所述http www w3 org WAI GL 2011 WD WCAG20 TECHS 2011062
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正

随机推荐

  • 没有 Google Play 的 Android Admob

    我在网上找不到任何东西 有没有办法使用 AdMob SDK 通过我的应用程序获利 而无需将应用程序放在 Google Play 商店中 你们中有人可能知道吗 提前致谢 您无需通过 Google Play 分发应用程序即可使用 AdMob S
  • 嵌套查询 MVC LINQ

    我是新来的MVC and LINQ 目前 我在该项目上遇到了困难 并决定发布 My MVC View我想要实现的目标 Cut 1 20 2 40 Color 3 30 4 50 Perm 5 10 这是我的数据表的一些示例 ID Offer
  • 未捕获的类型错误未定义不是函数

    我是 JQuery 新手 不知道如何处理诸如未捕获之类的错误TypeError undefined is not a function 我不知道如何按顺序排列下面的 jQuery 代码 有人可以安排一下吗 model Mvc4 WebGri
  • 有没有办法从 Zend Framework 的引导程序重定向浏览器?

    我需要根据引导文件中的某些条件进行重定向 这是在定义前端控制器和路由之后完成的 我怎么做 我知道我可以简单地使用 header Location 重点是我需要使用 Router 来构建 URL 一年多后 我在 ZF 编程 我为你的问题找到了
  • 如何导航到 WP7 中的不同枢轴项目

    我有一个全景页面 其中有 3 个按钮 我已将一个数据透视页添加到具有 3 个数据透视项的同一项目中 当我单击全景页面中的按钮 1 时 它应该转到数据透视页面中的第一个数据透视项目 当我单击全景页面中的按钮 2 时 它应该转到数据透视页面中的
  • Boost asio - 分离不同的数据块

    想象一下 我们创建简单的客户端 服务器应用程序来将文件从客户端发送到服务器 我们使用boost asio 服务器开始监听 客户端连接到服务器 客户端发送文件名和文件内容 但服务器只接收字节流 服务器如何检测文件名结尾和文件内容开头 我的第一
  • 使用 appium 运行量角器脚本时:使用定位器找不到元素

    我正在使用 Ipad Air 模拟器 appium 和量角器来自动执行 Angular JS 站点的测试 但测试无法成功通过 它告诉我使用定位器找不到元素 我确信 xpath 与 Appium 生成的相同 这是我的配置文件 exports
  • Java JNDI API 用户无法通过多林设置对 AD 进行身份验证

    在我的测试环境中 我设置了两个活动目录林 A 和 B 每个林都有一个域控制器 并且林有两种信任设置 我有用户 森林中的用户 S 和森林中的用户 B 我已经使用 adfind exe 来测试 userA 和 userB 是否可以通过点击for
  • 如何始终在 MSBuild 中执行目标

    我有一个 MSBuild 文件 它在编译应用程序之前操作 AssemblyInfo 文件 在构建结束时 它会恢复 AssemblyInfo 文件 它通过备份文件 操作文件 然后在构建时间后恢复文件来实现此目的 除非在构建过程中发生错误 否则
  • ASP.NET 数据缓存 - 在应用程序域重新启动后保留内容

    我正在使用 ASP NET 的数据缓存 API 例如 HttpRuntime Cache Insert my data my key 有没有办法配置缓存 以便在应用程序域回收时保留其内容 我将许多对象加载到缓存中 但是每次应用程序域重新启动
  • PowerShell - 如何迭代 PSCustomObject 嵌套对象?

    我觉得这很简单 但我只是不明白 我不确定我的解释是否很好 我有下面的 JSON 文件 我想在 New 对象下获取 每个应用程序 App1 App2 App3 在下面的脚本行中 我本质上是尝试用一些变量替换 TestApp2 我想我正在尝试在
  • 删除第二个冒号后的文本

    我需要删除第二个冒号之后的所有内容 我有几种日期格式 需要使用相同的算法进行清理 a lt 2016 12 31T18 31 34Z b lt 2016 12 31T18 31Z 我尝试匹配两个列组 但我似乎无法找出如何删除第二个匹配组 s
  • Python简单数字比较

    问题 计算机随机生成一个数字 用户输入一个数字 计算机会告诉你是否太高或太低 然后你将继续猜测 直到猜出数字为止 我的解决方案 import random computer random randint 1 500 def guessNum
  • Robotium:请安装兼容的 Android API 级别(15 或更高)

    尝试运行新的 Robotium 测试时出现此错误 有谁知道如何修理它 我拥有所需的所有 API 15 以及许多更高的 API 我缺少什么 这是我的 gradle 文件的一部分 android compileSdkVersion 25 bui
  • 将查询合并为一个

    我有以下疑问 Query 1 SELECT so ClientID All Channels as CustomerGroup so StatementID so Brand so Product Sum so Amount Amount
  • WaitHandle.WaitAny 匹配 WaitForMultipleObjects 功能

    我正在移植C API代码到 NET并研究函数调用WaitHandle WaitAny作为替代品WaitForMultipleObjects但是当调试时 NET4我可以看到这个函数被挂接到 private static extern int
  • 仅需要实体 ID 时如何避免初始化 Hibernate 代理

    For a ManyToOneJPA 实体中的关系 我只对实际的 id 引用感兴趣 而不是获取与该关系关联的整个模型 以这些 Kotlin JPA 实体为例 Entity class Continent Id var id String v
  • React 动态设置状态属性及其值[重复]

    这个问题在这里已经有答案了 我有以下组件 import React Component from react import Action from action jsx import SingleGridEl from singleGrid
  • RecyclerView 在使用 FirebaseRecyclerAdapter 首次启动时不会加载数据

    我在用着FirebaseRecyclerAdapter填充一个RecyclerView in a Fragment 这是我的代码 mDatabase FirebaseDatabase getInstance getReference myA
  • iText 在 sandbox.stamper.SuperImpose.java 中设置创建日期和修改日期

    我正在尝试在中设置创建日期和修改日期将一个 PDF 的内容叠加到另一个 PDF 中例如 sandbox stamper SuperImpose java 原则 我认为 很明确 use getInfo 然后做 info put PdfName