C#添加、获取、删除PDF附件实例代码
程序员文章站
2022-04-29 09:49:01
概述附件,指随同文件发出的有关文件或物品。在pdf文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而pdf中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在...
概述
附件,指随同文件发出的有关文件或物品。在pdf文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而pdf中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在。在下面的示例中介绍了如何分别添加以上两种形式的pdf附件。此外,根据pdf附件的不同添加方式,我们在获取pdf附件信息或删除pdf附件时,也可以分情况来执行操作。
工具使用
代码示例(供参考)
1.添加pdf附件
1.1 以普通文档形式添加附件
using spire.pdf; using spire.pdf.attachments; namespace addattachment_pdf { class program { static void main(string[] args) { //创建一个pdfdocument类对象,加载测试文档 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("sample.pdf"); //初始化pdfattachment类实例,加载需要附加的文档 pdfattachment attachment = new pdfattachment("new.pdf"); //将文档添加到原pdf文档的附件集合中 pdf.attachments.add(attachment); //保存并打开文档 pdf.savetofile("attachment1.pdf"); system.diagnostics.process.start("attachment1.pdf"); } } }
测试结果:
1.2 以文档注释形式添加附件
using spire.pdf; using spire.pdf.annotations; using spire.pdf.graphics; using system; using system.drawing; using system.io; namespace addattachment2 { class program { static void main(string[] args) { //创建一个pdfdocument类对象,加载测试文档 pdfdocument doc = new pdfdocument("sample.pdf"); //给添加一个新页面到文档 pdfpagebase page = doc.pages.add(); //添加文本到页面,并设置文本格式(字体、题号、字体粗细、颜色、文本位置等) pdftruetypefont font1 = new pdftruetypefont(new font("arial", 16f, system.drawing.fontstyle.bold)); page.canvas.drawstring("attachments:", font1, pdfbrushes.cornflowerblue, new point(50, 50)); //将文档作为注释添加到页面 pdftruetypefont font2 = new pdftruetypefont(new font("arial", 12f, system.drawing.fontstyle.bold)); pointf location = new pointf(52, 80); //设置注释标签,标签内容为作为附件的文档 string label = "sample.docx"; byte[] data = file.readallbytes("sample.docx"); sizef size = font2.measurestring(label); //设置注释位置、大小、颜色、标签类型以及显示文本等 rectanglef bounds = new rectanglef(location, size); page.canvas.drawstring(label, font2, pdfbrushes.mediumpurple, bounds); bounds = new rectanglef(bounds.right + 3, bounds.top, font2.height / 2, font2.height); pdfattachmentannotation annotation1 = new pdfattachmentannotation(bounds, "sample.docx", data); annotation1.color = color.purple; annotation1.flags = pdfannotationflags.nozoom; annotation1.icon = pdfattachmenticon.graph; annotation1.text = "sample.docx"; (page as pdfnewpage).annotations.add(annotation1); //保存并打开文档 doc.savetofile("attachment2.pdf"); system.diagnostics.process.start("attachment2.pdf"); } } }
2.获取pdf附件
2.1 获取文件附件
using spire.pdf; using spire.pdf.attachments; using system; using system.io; namespace getattachment_pdf { class program { static void main(string[] args) { //创建pdf文档,加载测试文件 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("attachment1.pdf"); //获取文档中的第一个文件附件 pdfattachment attachment = pdf.attachments[0]; //获取该附件的信息 console.writeline("name: {0}", attachment.filename); console.writeline("mimetype: {0}", attachment.mimetype); console.writeline("description: {0}", attachment.description); console.writeline("creation date: {0}", attachment.creationdate); console.writeline("modification date: {0}", attachment.modificationdate); //将附件的数据写入到新文档 file.writeallbytes(attachment.filename, attachment.data); console.readkey(); } } }
测试结果:
2.2 获取注释附件
using spire.pdf; using spire.pdf.annotations; using system.collections.generic; using system.io; namespace getattachment2 { class program { static void main(string[] args) { //加载pdf文档 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("attachment2.pdf"); //实例化一个list并将文档内所有页面的attachment annotations添加到该list list<pdfattachmentannotationwidget> attaches = new list<pdfattachmentannotationwidget>(); foreach (pdfpagebase page in pdf.pages) { foreach (pdfannotation annotation in page.annotationswidget) { attaches.add(annotation as pdfattachmentannotationwidget); } } //遍历list,将附件数据写入到新文档 for (int i = 0; i < attaches.count; i++) { file.writeallbytes(attaches[i].filename, attaches[i].data); } } } }
注释附件读取结果:
3.删除pdf附件
3.1 删除文件附件
using spire.pdf; namespace deleteattachment_pdf { class program { static void main(string[] args) { //加载pdf文档 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("attachment1.pdf"); //删除文档的所有文件附件 for (int i = 0; i < pdf.attachments.count; i++) { pdf.attachments.removeat(i); } //保存并打开文档 pdf.savetofile("remove.pdf"); system.diagnostics.process.start("remove.pdf"); } } }
3.2 删除注释附件
using spire.pdf; namespace deleteattachment_pdf { class program { static void main(string[] args) { //加载pdf文档 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("attachment1.pdf"); //删除文档的所有文件附件 for (int i = 0; i < pdf.attachments.count; i++) { pdf.attachments.removeat(i); } //保存并打开文档 pdf.savetofile("remove.pdf"); system.diagnostics.process.start("remove.pdf"); } } } 3.2 删除注释附件 using spire.pdf; using spire.pdf.annotations; namespace deleteattachment2 { class program { static void main(string[] args) { //加载pdf文档 pdfdocument pdf = new pdfdocument(); pdf.loadfromfile("attachment2.pdf"); //删除文档的所有注释附件 foreach (pdfpagebase page in pdf.pages) { for (int i = 0; i < page.annotationswidget.count; i++) { pdfannotation annotation = page.annotationswidget[i] as pdfattachmentannotationwidget; page.annotationswidget.remove(annotation); } } //保存并打开文档 pdf.savetofile("result.pdf"); system.diagnostics.process.start("result.pdf"); } } }
调试程序后,生成的文档就没有附件了。
以上就是c#添加、获取、删除pdf附件实例代码的详细内容,更多关于c#添加、获取、删除pdf附件的资料请关注其它相关文章!