Java 使用自定义属性从PDF添加/删除/检索信息
对不起,我昨天发了一个不清楚的问题。我想在自定义属性中存储2个字符串(string1和string2),以便该字符串与pdf一起使用。我已经有了该字符串,但我不知道如何将其存储在自定义属性区域下。自定义属性区域指的是文件---->Properties---->custom---->custom属性,它成对地获得“Name”和“Value”。我希望string1存储在“Value”中,string2存储在“Name”中 稍后,我想检索/删除自定义属性区域中的字符串。 请问如何使用itext实现它 感谢和问候Java 使用自定义属性从PDF添加/删除/检索信息,java,pdf,itext,Java,Pdf,Itext,对不起,我昨天发了一个不清楚的问题。我想在自定义属性中存储2个字符串(string1和string2),以便该字符串与pdf一起使用。我已经有了该字符串,但我不知道如何将其存储在自定义属性区域下。自定义属性区域指的是文件---->Properties---->custom---->custom属性,它成对地获得“Name”和“Value”。我希望string1存储在“Value”中,string2存储在“Name”中 稍后,我想检索/删除自定义属性区域中的字符串。 请问如何使用itext实现它
布莱恩谢谢你的澄清。根据您关于如何使用Acrobat添加所需数据的描述,我们现在知道您指的是元数据 我使用Acrobat添加了一个名为“Test”的自定义元数据条目,其值为“Test”,当您查看该文件内部时,可以看到该键/值对出现在两个位置(用红点标记):
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.addTitle("Some example");
document.add(new Header("Test", "test"));
document.open();
Paragraph p = new Paragraph("Hello World");
document.add(p);
document.close();
}
如您所见,iText具有添加标题、作者等的addX()
方法,。。。元数据。但是,如果要添加自定义条目,则需要使用add()
方法添加标题
实例。您需要在打开文档之前添加元数据
如果要将条目添加到现有PDF的信息字典中,可以使用my的示例,例如:
现在,您可以向该映射添加额外的字符串对。
在本例中,我们为元数据添加了标准键,但您也可以使用自定义键
从现有PDF文件中删除条目的方式与添加条目的方式相同。添加一个null
值就足够了。例如:
info.put("Test", null);
这将删除名为Test
的自定义条目,以防您的信息字典中存在此类值。我是否可以要求代码检索回字符串对,假设我在自定义属性中保存的是Name(Test)和value(Test),并且我知道名称是Test,如何获取该值?感谢另一件事是,当我在添加自定义属性(Test,Test)之前对pdf进行哈希运算时,我得到了字符串a。但是,当我使用info.put(“Test”,null)方法删除自定义属性时。删除自定义属性后,我再次散列pdf,得到另一个字符串b。这两个字符串不一样。如何使它们得到相同的哈希结果?我使用的散列算法MD5Don’t使用注释询问额外的问题。关于散列:如果您阅读ISO-32000-1,您应该知道没有两个PDF是相等的。如果您更新PDF以添加内容,则会更改ID。如果您在某个时间更新PDF以删除该文件,则ID将再次更改。但是:它从未更改为原始ID(该ID已丢失)。此外,PDF固有的特点是对象的组织方式是随机的。您使用哈希的用例违反了PDF标准。好的,非常感谢!下次我不会在评论中提出额外的问题。
String test = info.get("Test");
info.put("Test", null);