【问题标题】:Edit Metadata of PDF File with C# [closed]使用 C# 编辑 PDF 文件的元数据 [关闭]
【发布时间】:2010-11-30 17:28:41
【问题描述】:

我正在搜索方法或库来编辑 pdf 文件的元数据,例如程序 becypdfmetaedit

我想写一个程序,我在这个程序中需要这个选项。 也许你有一些 c# 示例。

谢谢

【问题讨论】:

    标签: c# file pdf metadata


    【解决方案1】:

    使用 PDF Sharp 的工作方式如下:

    using System;
    using PdfSharp.Pdf;
    using PdfSharp.Pdf.IO;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        static void Main (string[] args)
        {
          Program p = new Program();
          p.Test();
    
        }
    
        public void Test ()
        {
          PdfDocument document = PdfReader.Open ("Test.pdf");
    
          document.Info.Author = "ME";
    
          document.Save ("Result");
        }
      }
    

    }

    【讨论】:

    • 我试过了,但生产者不能改变:(它的坏 VS2008 说它是只读的
    • 由于软件是开源的,你可以修改它。因此,如果要更改文档的生成者,则必须修改 PdfDocument.PrepareForSave() 方法。如果文档不是使用 PDFSharp 创建的,它将使用原始文档的生产者。将 PdfDocumentInformation 的 Producer 属性更改为可设置并修改 PrepareForSave() 方法。这样就可以了。
    • 遗憾的是 pdfsharp 不支持 XMP 元数据。
    • 另一件事。最新版本的 PdfSharp 无法处理 iref 流。见stackoverflow.com/questions/36788746/…
    • 直接下载DLL的快捷方式:dllme.com/dll/download/33562/PdfSharp.dll
    【解决方案2】:

    对于 PDFSharp: 如果您想在 PDF 的 自定义属性 上更改/添加元数据,您可以使用 PdfDocument.Info.Elements 对象。

        String filename = @"d:\temp\Hugo-input.pdf";
        String outputfile = @"d:\temp\Hugo-output.pdf";
        PdfDocument document = PdfReader.Open(filename);
        document.Info.Elements.Add(new KeyValuePair<String,PdfItem>("/MyKey",new PdfString("MyValue")));
        document.Save(outputfile);
    

    自定义键始终以斜线开头!

    您可以在Adobe Acrobat Reader -> 文件-> 属性-> 自定义中打开此文档时找到键和值。

    这适用于 PDFSharp 1.32

    【讨论】:

      【解决方案3】:

      我想你可以用iTextSharp 做到这一点。

      【讨论】:

      • 是的,使用 Info 属性,您可以访问 PDF 元数据,使用 Metadata 属性,您可以访问 XML 元数据(XMP 格式)
      【解决方案4】:

      PDF Sharp 的 PdfDocumentInformation 类是否满足您的要求。

      【讨论】:

      • 你能解释一下它是如何工作的吗@crauscher
      • pdfsharp.net/wiki/HelloWorld-sample.ashx 展示了如何创建 PdfDocument 以及如何更改 PdfDocumentInformation (PdfDocument.Info)。如果你想打开一个现有的 Pdf,你可以使用 toe PfdReader class froom PDF sharp
      • 我可以删除/添加 xmp 代码到 pdf 吗?感谢您的样品!
      【解决方案5】:

      在这里拉皮条 - my company, Atalasoft, makes .NET components for working with images。该套件的一部分包括读取/写入 PDF 文档元数据的能力。它不是免费的,但它对桌面应用程序的运行时免版税。

      阅读代码很简单:

      PdfDocumentMetadata metadata = PdfDocumentMetadata.FromStream(sourceStream);
      

      对其进行编辑并将其写回同一流:

      meta.Title = "Knicholas Knickleby";
      meta.Author = "Edmund Wells";
      sourceStream.Seek(0, SeekOrigin.Begin);
      meta.Append(sourceStream, false); // false means don't merge - overwrite
      

      通过哈希表支持自定义字段。

      【讨论】:

        【解决方案6】:

        Aspose.PDFAspose.PDF.Kit 可以为您做到这一点。

        【讨论】:

        • 感谢您提供信息,但我搜索的是非商业解决方案
        • Aspose 不再允许修改生产者名称。在这里更新以帮助像我这样的人寻找解决方案。 :)
        猜你喜欢
        • 2022-11-25
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 2010-09-05
        • 2018-06-02
        相关资源
        最近更新 更多