itextSharp:使用C#在PDF中加载XMP时出错

时间:2014-06-30 15:42:44

标签: itextsharp itext

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

参考:Is it possible to load XMP file in PDF using iTextSharp?

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

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

PDF属性窗口 enter image description here

我曾经加载的XMP示例: enter image description here

我使用源代码来解决这个问题,但我不能,我仍在搜索。在我想告诉iTextSharp作者之前,我们只是发布了这个问题。

注意:

如果我按

设置关键字词典
Dictionary<String, String> info = reader.Info;
info.Add("Keywords", ",key1; key2");

工作正常。

1 个答案:

答案 0 :(得分:2)

问题可能是由您添加的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&#34;时,我可以重现您的问题:

enter image description here

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