温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#/VB.NET 如何添加、获取、删除PDF附件

发布时间:2020-07-29 05:24:04 来源:网络 阅读:5691 作者:E_iceblue 栏目:编程语言

概述

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

要点索引

1.添加PDF附件
1.1 以普通文档形式添加附件
1.2 以文档注释形式添加附件
2.获取PDF附件
2.1 获取文件附件
2.2 获取注释附件
3.删除PDF附件
3.1 删除文件附件
3.2 删除注释附件

工具使用

Spire.PDF for .NET 4.0

示例操作

1.添加PDF附件

1.1 以普通文档形式添加附件

Csharp

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#/VB.NET 如何添加、获取、删除PDF附件

VB.NET

Imports Spire.Pdf Imports Spire.Pdf.Attachments Namespace AddAttachment_PDF Class Program Private Shared Sub Main(ByVal args As String()) Dim pdf As PdfDocument = New PdfDocument() pdf.LoadFromFile("sample.pdf") Dim attachment As PdfAttachment = New PdfAttachment("New.pdf") pdf.Attachments.Add(attachment) pdf.SaveToFile("Attachment1.pdf") System.Diagnostics.Process.Start("Attachment1.pdf") End Sub End Class End Namespace 

1.2 以文档注释形式添加附件

Csharp

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#/VB.NET 如何添加、获取、删除PDF附件

VB.NET

Imports Spire.Pdf Imports Spire.Pdf.Annotations Imports Spire.Pdf.Graphics Imports System Imports System.Drawing Imports System.IO Namespace AddAttachment2 Class Program Private Shared Sub Main(ByVal args As String()) Dim doc As PdfDocument = New PdfDocument("sample.pdf") Dim page As PdfPageBase = doc.Pages.Add() Dim font1 As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Arial", 16F, System.Drawing.FontStyle.Bold)) page.Canvas.DrawString("Attachments:", font1, PdfBrushes.CornflowerBlue, New Point(50, 50)) Dim font2 As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Arial", 12F, System.Drawing.FontStyle.Bold)) Dim location As PointF = New PointF(52, 80) Dim label As String = "sample.docx" Dim data As Byte() = File.ReadAllBytes("sample.docx") Dim size As SizeF = font2.MeasureString(label) Dim bounds As RectangleF = 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) Dim annotation1 As PdfAttachmentAnnotation = New PdfAttachmentAnnotation(bounds, "sample.docx", data) annotation1.Color = Color.Purple annotation1.Flags = PdfAnnotationFlags.NoZoom annotation1.Icon = PdfAttachmentIcon.Graph annotation1.Text = "sample.docx" (TryCast(page, PdfNewPage)).Annotations.Add(annotation1) doc.SaveToFile("Attachment2.pdf") System.Diagnostics.Process.Start("Attachment2.pdf") End Sub End Class End Namespace 

2.获取PDF附件

2.1 获取文件附件

Csharp

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#/VB.NET 如何添加、获取、删除PDF附件

VB.NET

Imports Spire.Pdf Imports Spire.Pdf.Attachments Imports System Imports System.IO Namespace GetAttachment_PDF Class Program Private Shared Sub Main(ByVal args As String()) Dim pdf As PdfDocument = New PdfDocument() pdf.LoadFromFile("Attachment1.pdf") Dim attachment As PdfAttachment = 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() End Sub End Class End Namespace 

2.2 获取注释附件

Csharp

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#/VB.NET 如何添加、获取、删除PDF附件

VB.NET

Imports Spire.Pdf Imports Spire.Pdf.Annotations Imports System.Collections.Generic Imports System.IO Namespace GetAttachment2 Class Program Private Shared Sub Main(ByVal args As String()) Dim pdf As PdfDocument = New PdfDocument() pdf.LoadFromFile("Attachment2.pdf") Dim attaches As List(Of PdfAttachmentAnnotationWidget) = New List(Of PdfAttachmentAnnotationWidget)() For Each page As PdfPageBase In pdf.Pages For Each annotation As PdfAnnotation In page.AnnotationsWidget attaches.Add(TryCast(annotation, PdfAttachmentAnnotationWidget)) Next Next For i As Integer = 0 To attaches.Count - 1 File.WriteAllBytes(attaches(i).FileName, attaches(i).Data) Next End Sub End Class End Namespace 

3.删除PDF附件

3.1 删除文件附件

Csharp

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

VB.NET

Imports Spire.Pdf Namespace DeleteAttachment_PDF Class Program Private Shared Sub Main(ByVal args As String()) Dim pdf As PdfDocument = New PdfDocument() pdf.LoadFromFile("Attachment1.pdf") For i As Integer = 0 To pdf.Attachments.Count - 1 pdf.Attachments.RemoveAt(i) Next pdf.SaveToFile("Remove.pdf") System.Diagnostics.Process.Start("Remove.pdf") End Sub End Class End Namespace 

3.2 删除注释附件

Csharp

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

VB.NET

Imports Spire.Pdf Imports Spire.Pdf.Annotations Namespace DeleteAttachment2 Class Program Private Shared Sub Main(ByVal args As String()) Dim pdf As PdfDocument = New PdfDocument() pdf.LoadFromFile("Attachment2.pdf") For Each page As PdfPageBase In pdf.Pages For i As Integer = 0 To page.AnnotationsWidget.Count - 1 Dim annotation As PdfAnnotation = TryCast(page.AnnotationsWidget(i), PdfAttachmentAnnotationWidget) page.AnnotationsWidget.Remove(annotation) Next Next pdf.SaveToFile("Result.pdf") System.Diagnostics.Process.Start("Result.pdf") End Sub End Class End Namespace 

调试程序后,生成的文档就没有附件了。

以上全部内容为本次关于“C#/VB.NT操作PDF附件”的方法讲述。代码供参考,希望能给各位提供一定解决问题的思路。

( 如需转载本文,请注明出处。)

感谢阅读!

《本文完》

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

pdf
AI