itextSharp : Mistake in Loading XMP in PDF with C#

标签 itext

我正在使用 iTextSharp 加载 PDF 文件中的 XMP

引用:Is it possible to load XMP file in PDF using iTextSharp?

根据上面的说明,我在 PDF 文件中加载了 XMP 数据,但有一个问题

在关键字部分"; "分号和单个空格默认添加在前缀中,如下面的屏幕截图所示。

PDF 属性窗口: enter image description here

我用来加载的 XMP 示例: enter image description here

我使用源代码来解决这个问题,但我不能,我仍然只是在搜索。在我想让你知道 iTextSharp 作者之前,所以只发布这个问题。

注意:

如果我设置关键字字典

Dictionary<String, String> info = reader.Info;
info.Add("Keywords", ",key1; key2");

工作正常。

最佳答案

该问题可能是由您添加的 XMP 文件引起的。 Adobe Reader 正在向您在 <dc:subject> 中定义的关键字添加额外的内容。基于 pdf:Keywords 中存在或缺失的内容属性。

请看一下这个例子:xmp_metadata_added.pdf

XMP 文件如下所示:

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.0-jc003">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
        xmlns:dc="http://purl.org/dc/elements/1.1/"
        xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
        xmlns:xmp="http://ns.adobe.com/xap/1.0/"
      dc:format="application/pdf"
      pdf:Keywords="Metadata, iText, PDF"
      pdf:Producer="iText® 5.5.1 ©2000-2014 iText Group NV (AGPL-version); modified using iText® 5.5.1 ©2000-2014 iText Group NV (AGPL-version)"
      xmp:CreateDate="2014-05-16T17:04:59+01:00"
      xmp:CreatorTool="My program using iText"
      xmp:ModifyDate="2014-05-16T17:04:59+01:00"
      xmp:MetadataDate="2014-05-16T17:04:59+01:00">
      <dc:description>
        <rdf:Alt>
          <rdf:li xml:lang="x-default">This example shows how to add metadata</rdf:li>
        </rdf:Alt>
      </dc:description>
      <dc:creator>
        <rdf:Seq>
          <rdf:li>Bruno Lowagie</rdf:li>
        </rdf:Seq>
      </dc:creator>
      <dc:subject>
        <rdf:Bag>
          <rdf:li>Metadata</rdf:li>
          <rdf:li>iText</rdf:li>
          <rdf:li>PDF</rdf:li>
        </rdf:Bag>
      </dc:subject>
      <dc:title>
        <rdf:Alt>
          <rdf:li xml:lang="x-default">Hello World example</rdf:li>
        </rdf:Alt>
      </dc:title>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>

你认识:

<dc:subject>
    <rdf:Bag>
        <rdf:li>Metadata</rdf:li>
        <rdf:li>iText</rdf:li>
        <rdf:li>PDF</rdf:li>
    </rdf:Bag>
</dc:subject>

但是你看到了吗:

pdf:Keywords="Metadata, iText, PDF"

你也需要那部分。

这是包含该部分的屏幕截图:

enter image description here

当我删除pdf:Keywords="Metadata, iText, PDF时“,我可以重现您的问题:

enter image description here

这证明您的问题是由您的 XMP 文件引起的,而不是由 iText 引起。

关于itextSharp : Mistake in Loading XMP in PDF with C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24493966/

相关文章:

java - 如何使用java打印PDF的一页?

c# - iTextPdf 如何分页

java - 是否可以将 ARGB 背景颜色设置为 IText PDF 单元格?

java - float 属性在 HtmlWorker(iText) 中不起作用

java - 使用 iText 在 PDF 表格中添加一行

java - 如何在 itext PdfPTable 中动态添加一行?

java - 使 JFreeChart CategoryPlot 看起来像 Flot.js 条形图

java - iTextPDF 签名 : how to not show signature fields, 但显示图像

java - pdfbox 和 itext 以不正确的 dpi 提取图像

java - iText + HTMLWorker - 如何更改默认字体?