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

测试结果:

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

(0)

相关推荐

  • C#实现合并及拆分PDF文件的方法

    有时我们可能会遇到下图这样一种情况 - 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个PDF文件.相对应的,有时候我们也需要拆分一个大的PDF文件,来从中获取我们需要的那一部分资料.这篇文章主要分享如何使用C#来将多个PDF文件合并为一个PDF文件以及将一个PDF文件拆分为多个PDF文件. 合并PDF文件 合并PDF文件的代码很简单,主要分为三步,首先获取需要合并的PDF文件,然后调用public static

  • C# 在PDF文档中创建表格的实现方法

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组件的情况下来实现.本篇文章中将介绍如何正确使用组件Free Spire.PDF for .NET添加表格到PDF.该组件提供了两个类PdfTable和PdfGrid用于创建表格,在进行代码编辑前,需先安装,添加Spire.PDF. dll到项目程序集中,同时添加到命名空间.下面是两种方法来添加表格的

  • C#合并多种格式文件为PDF的方法

    文档合并是一种高效文档处理方式.如果能够有一个方法能将多种不同类型的文档合并成一种文档格式,那么在文档存储管理上将为我们提供极大的便利.因此,本篇文章介绍了一种如何使用免费组件Free Spire.Office for .NET来实现将多种各式的文档合并为PDF的方法.本方法中可合并的文档格式可以是doc.docx.xls.xlsx.pdf等.下面将进行详细阐述. 使用方法:安装Free Spire.Office for .NET后,添加引用spire.doc.dll, spire.xls.dl

  • C# 添加、修改和删除PDF书签的实例代码

    有时候我们在阅读PDF文档时会遇到这样一种情况:PDF文档页数比较多,但是又没有书签,所以我们不能根据书签快速了解文档所讲解的内容,也不能点击书签快速跳转到相应的位置,而只能一页一页的翻阅,非常苦恼.相信开发人员在开发和PDF有关的应用程序时,也会有这样的功能需求,因此在这篇文章中我就介绍一下如何使用编程的方式(C#)和Spire.PDF组件给PDF文档添加书签(包括添加书签到现有文档和添加子书签),以及修改和删除现有PDF文档中的指定书签. Spire.PDF组件概述 Spire.PDF是一个

  • C#打印PDF文档的10种方法(小结)

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这里归纳了10种打印需求及方法.如下: 使用默认打印机打印PDF文档 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档 指定打印机及PDF文档打印页码范围 静默打印PDF文档 双面打印PDF文档 黑白打印PDF文档 打印PDF文档时选择不同的出纸盒

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

    概述 附件,指随同文件发出的有关文件或物品.在PDF文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而PDF中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在.在下面的示例中介绍了如何分别添加以上两种形式的PDF附件.此外,根据PDF附件的不同添加方式,我们在获取PDF附件信息或删除PDF附件时,也可以分情况来执行操作. 工具使用 pire.PDF for .NET 4.0 代码示例(供参考)  1.添加PDF附件    1.1 以普通文档形式添加附件

  • Vue.js动态添加、删除选题的实例代码

    大家先看看页面效果吧,当当当当``````````````````````` 图中第二个选题是小颖点击了"新增选题"按钮,然后出来的,当你点击了"删除选项"或"删除选题"按钮,就会删除相应的选项和选题. html代码 <template> <div class="main-container"> <div class="form-horizontal"> <temp

  • jQuery实现动态添加和删除input框实例代码

    本文实例为大家分享了jQuery实现动态添加和删除input框的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>选项</title> <script type="text/javascript" src="js/jquery-1.8.3.js"></s

  • jQuery动态添加与删除tr行实例代码

    这篇文章给大家分享的是一个用Jquery实现动态添加和删除tr行的小例子 下面是实现的样子,当然没有样式: 点击添加按钮可以添加一行: 点击删除可以删除本行: 基本功能是这样,下面是代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- 这里是引用了一个百度的jquery库,可换为本地jquery

  • Java 添加和删除PDF图层的示例代码

    在PDF文档中,图层可以使部分内容选择性地被隐藏或显示.通过添加图层,我们可以将文本.图片.表格等元素精确定位于页面指定位置,并可将这些元素进行叠放.组合形成页面的最终效果.本文将介绍如何使用Spire.PDF for Java来添加和删除PDF图层. 使用工具: Free Spire.PDF for Java (免费版) Jar文件获取及导入: 方法1:通过官方网站 下载获取jar包.解压后将lib文件夹下的Spire.Pdf.jar文件导入Java程序.(如下图) 方法2:通过maven仓库

  • java实现选中删除功能的实例代码

    分析: 通过form表单传递数据,删除数据根据id编号删除. 前台 <a class="btn btn-primary" href="javascript:void(0);" rel="external nofollow" id="delSelected">删除选中</a> </div> <form id="form" action="${pageCont

  • AJAX跨域请求JSONP获取JSON数据的实例代码

    Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制,该方法

  • 原生js封装添加class,删除class的实例

    一.添加class function addClass(ele,cName) { var arr = ele.className.split(' ').concat(cName.split(" ")); for(var i=0;i<arr.length;i++){ for(var k=arr.length-1;k>i;k--){ (arr[k]==="")&&arr.splice(k,1); (arr[i]===arr[k])&&

  • Angularjs添加排序查询功能的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="angular-1.3.0.js"></script&g

  • C#微信小程序服务端获取用户解密信息实例代码

     C#微信小程序服务端获取用户解密信息实例代码 实现代码: using AIOWeb.Models; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; namespace AIOWe

随机推荐