除了文字和图形外,pdf 文档还允许将完整的文件作为附件添加到文档中。将系列文件作为附件添加到 pdf 文档中能够方便我们对其进行分享、传输,也能保证内容的完整性。spire.pdf for .net 允许使用者以以下两种方式添加附件到 pdf 文档中:
- 文档附件:直接添加到文档中的附件,不会在页面上显示,只能在附件面板查看。
- 注释附件:添加到注释中的附件。注释附件可添加到文档任意位置,以图标显示在页面上,双击图标即可打开附件。
本文将介绍如何使用 spire.pdf for .net 通过 c# 和 vb.net 在 pdf 文档中添加或删除这两种类型的附件。
安装 spire.pdf for .net
首先,您需要添加 spire.pdf for .net 包中包含的 dll 文件作为 .net 项目中的引用。dll 文件可以从此链接下载或通过 安装。
pm> install-package spire.pdf
添加文档附件到 pdf 文档
使用 pdfdocument.attachments.add() 方法即可轻松将文档附件添加到附件面板。以下是详细操作步骤:
- 创建 pdfdocument 的对象。
- 使用 pdfdocument.loadfromfile() 方法载入 pdf 文档。
- 基于外部文件创建 pdfattachment 的对象。
- 使用 pdfdocument.attachments.add() 方法添加该附件到 pdf 文档。
- 使用 pdfdocument.savetofile() 方法保存文档。
- c#
- vb.net
using spire.pdf;
using spire.pdf.attachments;
namespace attachfilestopdf
{
class program
{
static void main(string[] args)
{
//创建pdfdocument的对象
pdfdocument pdf = new pdfdocument();
//载入pdf文档
pdf.loadfromfile("计划书.pdf");
//基于外部文件创建pdfattachment的对象
pdfattachment attachment = new pdfattachment("研究员安排表.xlsx");
//添加该附件到pdf文档
pdf.attachments.add(attachment);
//保存文档
pdf.savetofile("文档附件.pdf");
}
}
}
imports spire.pdf
imports spire.pdf.attachments
namespace attachfilestopdf
class program
shared sub main(byval args() as string)
'创建pdfdocument的对象
dim pdf as pdfdocument = new pdfdocument()
'载入pdf文档
pdf.loadfromfile("计划书.pdf")
'基于外部文件创建pdfattachment的对象
dim attachment as pdfattachment = new pdfattachment("研究员安排表.xlsx")
'添加该附件到pdf文档
pdf.attachments.add(attachment)
'保存文档
pdf.savetofile("文档附件.pdf")
end sub
end class
end namespace
添加注释附件到 pdf 文档
注释附件会同时显示在页面上及附件面板中。以下是添加注释附件到 pdf 文档的详细操作步骤:
- 创建 pdfdocument 的对象。
- 使用 pdfdocument.loadfromfile() 方法载入 pdf 文档。
- 通过 pdfdocument.pages[] 属性获取要添加注释的页面。
- 基于外部文件创建 pdfattachmentannotation 的对象。
- 使用 pdfpagebase.annotationswidget.add() 方法将注释附件添加到该页。
- 使用 pdfdocument.savetofile() 方法保存文档。
- c#
- vb.net
using spire.pdf;
using spire.pdf.annotations;
using spire.pdf.graphics;
using system;
using system.drawing;
using system.io;
namespace annotationattachment
{
class program
{
static void main(string[] args)
{
//创建pdfdocument的对象
pdfdocument pdf = new pdfdocument();
//载入pdf文件
pdf.loadfromfile("计划书.pdf");
//获取指定页面
pdfpagebase page = pdf.pages[1];
//在页面上绘制标签
string label = "研究员安排表:";
pdftruetypefont font = new pdftruetypefont(new font("黑体", 13f, fontstyle.bold), true);
float x = page.actualsize.width/2 - 50;
float y = page.actualsize.height - 150;
page.canvas.drawstring(label, font, pdfbrushes.red, x, y);
//基于外部文件创建pdfattachmentannotation的对象
string filepath = "研究员安排表.xlsx";
byte[] data = file.readallbytes(filepath);
sizef size = font.measurestring(label);
rectanglef bounds = new rectanglef((float)(x size.width 5), (float)y, 10, 15);
pdfattachmentannotation annotation = new pdfattachmentannotation(bounds, "研究员安排表.xlsx", data);
annotation.color = color.purple;
annotation.flags = pdfannotationflags.default;
annotation.icon = pdfattachmenticon.graph;
annotation.text = "双击以打开附件。";
//将注释附件添加到该页
page.annotationswidget.add(annotation);
//保存文档
pdf.savetofile("注释附件.pdf");
}
}
}
imports spire.pdf
imports spire.pdf.annotations
imports spire.pdf.graphics
imports system
imports system.drawing
imports system.io
namespace annotationattachment
class program
shared sub main(byval args() as string)
'创建pdfdocument的对象
dim pdf as pdfdocument = new pdfdocument()
'载入pdf文件
pdf.loadfromfile("计划书.pdf")
'获取指定页面
dim page as pdfpagebase = pdf.pages(1)
'在页面上绘制标签
dim label as string = "研究员安排表:"
dim font as pdftruetypefont = new pdftruetypefont(new font("黑体", 13.0f, fontstyle.bold), true)
dim x as single = page.actualsize.width / 2 - 50
dim y as single = page.actualsize.height - 150
page.canvas.drawstring(label, font, pdfbrushes.red, x, y)
'基于外部文件创建pdfattachmentannotation的对象
dim filepath as string = "研究员安排表.xlsx"
dim data() as byte = file.readallbytes(filepath)
dim size as sizef = font.measurestring(label)
dim bounds as rectanglef = new rectanglef(ctype((x size.width 5), (single)y, 10, 15, single))
dim annotation as pdfattachmentannotation = new pdfattachmentannotation(bounds, "研究员安排表.xlsx", data)
annotation.color = color.purple
annotation.flags = pdfannotationflags.default
annotation.icon = pdfattachmenticon.graph
annotation.text = "双击以打开附件。"
'将注释附件添加到该页
page.annotationswidget.add(annotation)
'保存文档
pdf.savetofile("注释附件.pdf")
end sub
end class
end namespace
删除 pdf 文档中的文档附件
pdf 文档中的附件可以通过 pdfdocument.attachments 获取,然后使用 removeat() 或 clear() 方法即可删除指定的或所有的附件。详细操作步骤如下:
- 创建 pdfdocument 的对象。
- 使用 pdfdocument.loadfromfile() 方法载入 pdf 文档。
- 通过 pdfdocument.attachments 属性从文档获取附件的集。
- 使用 pdfattachmentcollection.removeat() 方法删除指定附件,或使用 pdfattachmentcollection.clear() 方法删除所有附件。
- 使用 pdfdocument.savetofile() 方法保存文档。
- c#
- vb.net
using spire.pdf;
using spire.pdf.attachments;
namespace removeattachments
{
class program
{
static void main(string[] args)
{
//创建pdfdocument的对象
pdfdocument doc = new pdfdocument();
//载入pdf文件
doc.loadfromfile("文档附件.pdf");
//获取附件集
pdfattachmentcollection attachments = doc.attachments;
//删除指定附件
attachments.removeat(0);
//删除所有附件
//attachments.clear();
//保存文档
doc.savetofile("删除文档附件.pdf");
}
}
}
imports spire.pdf
imports spire.pdf.attachments
namespace removeattachments
class program
shared sub main(byval args() as string)
'创建pdfdocument的对象
dim doc as pdfdocument = new pdfdocument()
'载入pdf文件
doc.loadfromfile("文档附件.pdf")
'获取附件集
dim attachments as pdfattachmentcollection = doc.attachments
'删除指定附件
attachments.removeat(0)
'删除所有附件
'attachments.clear();
'保存文档
doc.savetofile("删除文档附件.pdf")
end sub
end class
end namespace
删除 pdf 文档中的注释附件
pdf 文档中的注释是基于页面的文档元素。要获取文档中的所有注释,我们需要循环遍历文档页面并获取每一页的注释。获取一页的所有注释后,判断注释是否为附件注释。最后再使用 remove() 方法从注释集中移除附件注释,就完成了对注释附件的删除。以下是详细操作步骤:
- 创建 pdfdocument 的对象。
- 使用 pdfdocument.loadfromfile() 方法载入 pdf 文档。
- 循环遍历文档中的页面,并通过 pdfdocument.pages[].annotationswidget 属性获取页面的注释集。
- 判断注释是否为 pdfattachmentannotationwidget 的对象。如果是,则使用 pdfannotationcollection.remove() 方法删除该注释。
- 使用 pdfdocument.savetofile() 方法保存文档。
- c#
- vb.net
using spire.pdf;
using spire.pdf.annotations;
namespace removeannotationattachments
{
class program
{
static void main(string[] args)
{
//创建pdfdocument的对象
pdfdocument doc = new pdfdocument();
//载入pdf文档
doc.loadfromfile("注释附件.pdf");
//循环遍历文档中的页面
for (int i = 0; i < doc.pages.count; i )
{
//获取注释集
pdfannotationcollection annotationcollection = doc.pages[i].annotationswidget;
//循环遍历注释
for (int j = 0; j < annotationcollection.count; j )
{
//判断注释是否为pdfattachmentannotationwidget的对象
if (annotationcollection[j] is pdfattachmentannotationwidget)
{
//删除注释附件
annotationcollection.remove((pdfannotation)annotationcollection[j]);
}
}
}
//保存文档
doc.savetofile("删除注释附件.pdf");
}
}
}
imports spire.pdf
imports spire.pdf.annotations
namespace removeannotationattachments
class program
shared sub main(byval args() as string)
'创建pdfdocument的对象
dim doc as pdfdocument = new pdfdocument()
'载入pdf文档
doc.loadfromfile("注释附件.pdf")
'循环遍历文档中的页面
dim i as integer
for i = 0 to doc.pages.count - 1 step i 1
'获取注释集
dim annotationcollection as pdfannotationcollection = doc.pages(i).annotationswidget
'循环遍历注释
dim j as integer
for j = 0 to annotationcollection.count - 1 step j 1
'判断注释是否为pdfattachmentannotationwidget的对象
if typeof annotationcollection(j) is pdfattachmentannotationwidget then
'删除注释附件
annotationcollection.remove(ctype(annotationcollection(j), pdfannotation))
end if
next
next
'保存文档
doc.savetofile("删除注释附件.pdf")
end sub
end class
end namespace
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。