欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#添加、获取、删除PDF附件实例代码

程序员文章站 2022-04-29 09:49:01
概述附件,指随同文件发出的有关文件或物品。在pdf文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而pdf中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在...

概述

附件,指随同文件发出的有关文件或物品。在pdf文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而pdf中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在。在下面的示例中介绍了如何分别添加以上两种形式的pdf附件。此外,根据pdf附件的不同添加方式,我们在获取pdf附件信息或删除pdf附件时,也可以分情况来执行操作。

工具使用

pire.pdf for .net 4.0

代码示例(供参考)

 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"); 
 } 
 }
}

测试结果:

C#添加、获取、删除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"); 
 } 
 }
 }

C#添加、获取、删除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(); 
 } 
 }
 }

测试结果:

C#添加、获取、删除PDF附件实例代码

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); 
 } 
 } 
 }
 }

注释附件读取结果:

C#添加、获取、删除PDF附件实例代码

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附件的资料请关注其它相关文章!

相关标签: C# pdf附件