当前位置: 首页 > 编程语言 > C#

在iTextSharp中设置元数据共享

时间:2023-04-11 00:52:39 C#

在iTextSharp中设置元数据我正在开发一个应用程序,我正在使用iTextSharp库。我也在阅读Manning的iText,以便获得参考。在第12章中,它有以下代码来更改Java中的元数据。PdfReader阅读器=newPdfReader(src);PdfStamperstamper=newPdfStamper(reader,newFileOutputStream(dest));HashMap信息=reader.getInfo();info.put("Title","HelloWorldstamped");信息。put("Subject","HelloWorldwithchangedmetadata");info.put("关键词","iText实战,PdfStamper");info.put("Creator","愚蠢的独立示例");info.put("Author","AlsoBrunoLowagie");stamper.setMoreInfo(信息);stamper.close();我怎样才能在C#中做同样的事情?从Java过渡到C#通常非常简单。按照惯例,Java属性以get和set为前缀,因此要转换为C#,您只需删除前缀并将其转换为.Netgetter/setter调用。getInfo()变为Info,setMoreInfo(info)变为MoreInfo=info。然后,您只需将本机Java类型转换为其等效的C#类型。在这种情况下,JavaFileOutputStream变成了.NetFileStream,而HashMap变成了Dictionary。最后,我更新了代码以反映最近对iTextSharp的更改,它现在(从5.1.1.0开始)实现了IDisposable。使用系统;使用System.Collections.Generic;使用System.ComponentModel;使用System.Windows.Forms;使用System.IO;使用iTextSharp.text;使用iTextSharp.text.pdf;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){stringworkingFolder=Environment.GetFolderPath(Environment.SpecialFolder.Desktop);stringinputFile=Path.Combine(workingFolder,"Input.pdf");stringoutputFile=Path.Combine(workingFolder,"Output.pdf");PdfReader阅读器=newPdfReader(inputFile);using(FileStreamfs=newFileStream(outputFile,FileMode.Create,FileAccess.Write,FileShare.None)){using(PdfStamperstamper=newPdfStamper(reader,fs)){字典信息=reader.Info;info.Add("Title","HelloWorldstamped");info.Add("Subject","HelloWorldwithchangedmetadata");info.Add("关键词","iText实战,PdfStamper");info.Add("创建者",“愚蠢的独立示例”);info.Add("作者","还有BrunoLowagie");stamper.MoreInfo=信息;压模。关闭();}}this.Close();在的监视窗口中搜索正确位置后创建此文件,这会更改PDF中的“PDFCreator”,因为默认情况下无法访问它:privatestaticvoidReplacePDFCreator(PdfWriterwriter){TypewriterType=writer.GetType();PropertyInfowriterProperty=writerType.GetProperties(BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance).Where(p=>p.PropertyType==typeof(PdfDocument)).FirstOrDefault();PdfDocumentpd=(PdfDocument)writerProperty(GetValuewriter);输入pdType=pd.GetType();FieldInfoinfoProperty=pdType.GetFields(BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance).Where(p=>p.Name=="info").FirstOrDefault();PdfDocument.PdfInfopdfInfo=(PdfDocument.PdfInfo)infoProperty.GetValue(pd);PdfStringstr=newPdfString("您的新PDF创建者在这里");pdfInfo.Remove(newPdfName("制作人"));pdfInfo.Put(newPdfName("生产r"),str);}我从“@yannic-donot-text”那里得到了一个建议,它更干净!:newPdfString("YOURNEWPDFCREATORHERE"));}感觉只能靠反思了,不过还是很感谢有文化的人配合:)谢谢!以上是C#学习教程:atiTextSharpIf对你有用,需要多了解C#学习教程,希望大家多多关注publicvoidpdfproperties(){stringinputFile=@"D:1.pdf";stringoutputFile=@"D:48.pdf";PdfReaderreader=newPdfReader(inputFile);foreach(KeyValuePairKVinreader.Info){reader.Info.Remove(KV.Key);}使用(FileStreamFS=newFileStream(outputFile,FileMode.Create),FileAccess.Write,FileShare.None)){使用(DocumentDoc=newDocument()){使用(PdfCopywriter=newPdfCopy(Doc,FS)){Doc.Open();Doc.AddTitle("添加标题");Doc.AddSubject("添加主题");Doc.AddKeywords("添加关键字");Doc.AddCreator("应用程序创建器");Doc.AddAuthor("添加作者");对于(inti=1;i本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: