微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用iTextSharp为C#设置现有PDF的版权元数据

如何使用iTextSharp为C#设置现有(即从文件或内存流加载的pdf)pdf文件的版权元数据?

非常感谢

解决方法

本机XMP结构没有实现版权(或者至少它们不是Adobe Reader识别的方式.)为此,您可以对Adobe启动并手动编写的内容进行反向工程:

String inputPDF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),"Services.pdf");
        String outputPDF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),"Services_Out.pdf");

        PdfReader reader = new PdfReader(inputPDF);
        using (FileStream fs = new FileStream(outputPDF,FileMode.Create,FileAccess.Write,FileShare.Read))
        {
            using (pdfstamper stamper = new pdfstamper(reader,fs))
            {
                using (MemoryStream ms = new MemoryStream())
                {

                    string copyrightName = "YOUR NAME HERE";
                    string copyrightUrl = "http://www.example.com/";

                    XmpWriter xmp = new XmpWriter(ms);
                    xmp.AddRdfDescription("xmlns:dc=\"http://purl.org/dc/elements/1.1/\"",String.Format("<dc:rights><rdf:Alt><rdf:li xml:lang=\"x-default\">{0}</rdf:li></rdf:Alt></dc:rights>",copyrightName));
                    xmp.AddRdfDescription("xmlns:xmpRights=\"http://ns.adobe.com/xap/1.0/rights/\"",string.Format("<xmpRights:Marked>True</xmpRights:Marked><xmpRights:WebStatement>{0}</xmpRights:WebStatement>",copyrightUrl));
                    xmp.Close();
                    stamper.XmpMetadata = ms.ToArray();
                    stamper.Close();

                }
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐