将CMP数据写入C#中的现有PDF

时间:2018-01-17 16:21:25

标签: c# pdf itext xmp

我在使用iTextSharp库将XMP元数据写入c#中的现有pdf文件时遇到问题。这是我的,但它不起作用。任何建议

string src = @"C:\test\Test Artifact Document.pdf";

PdfReader reader = new PdfReader(src);


using (MemoryStream ms = new MemoryStream())
{
    using (PdfStamper stamper = new PdfStamper(reader, ms))
    {
         Dictionary<String, String> info = reader.Info;
         using (MemoryStream msXmp = new MemoryStream())
         {
               XmpWriter xmp = new XmpWriter(msXmp, info);
               xmp.SetProperty(XmpConstants.NsDC, "Firm", "FBI");

               xmp.Close();
               stamper.XmpMetadata = msXmp.ToArray();
         }
     }            
}

提前致谢!

2 个答案:

答案 0 :(得分:1)

我认为问题在于代码未保存更改。 压模将更改写入MemoryStream中,如果您不将更改保存到文件中,则不是在保存它们。

        string src = @"C:\test\Test Artifact Document.pdf";

        PdfReader reader = new PdfReader(src);


        using (MemoryStream ms = new MemoryStream())
        {
            using (PdfStamper stamper = new PdfStamper(reader, ms))
            {
                Dictionary<String, String> info = reader.Info;
                using (MemoryStream msXmp = new MemoryStream())
                {
                    XmpWriter xmp = new XmpWriter(msXmp, info);
                    xmp.SetProperty(XmpConstants.NsDC, "Firm", "FBI");

                    xmp.Close();
                    stamper.XmpMetadata = msXmp.ToArray();
                }
                stamper.Close();
            }
            File.WriteAllBytes(@"C:\test\Test Artifact Document (1).pdf", ms.ToArray());
        }

免责声明:这是我的第一时间在这里回答……等等……不要太苛刻。我只是在回答这个问题,因为Google几次把我带到这里,而我再也看不到它没有答案了。

答案 1 :(得分:0)

我没有足够的代表发表评论。

在这里查看这个答案: you need

我首先尝试立即从元数据字段中读取值,然后看看你得到了什么。可能你已经更新了内存流中的pdf,但有些东西阻止了它的保存。