Spire.Pdf 的各种操作总结

 Spire.Pdf 的各种操作总结

 

简介 

 

试验新产品总是给我带来许多挑战,当然这也是一个引进创新技术的好方法。在这里我要跟大家分享的是使用Spire.Pdf的过程,它是来自E-iceblue公司的轻便PDF程序库。

 

设计情节

 

我以前经常没事就搞搞PDFSpire.Pdf是用C# 写的PDF组件。他们自己声称:


pastingSpire.PDF for .NET is a professional PDF component applied to creating, writing, editing, handling and reading PDF files without any external dependencies within .NET application. Using this .NET PDF library, you can implement rich capabilities to create PDF files from scratch or process existing PDF documents entirely through C#/VB.NET without installing Adobe Acrobat.

 

先决条件

 

首先,从这下载它的免费版:http://freepdf.codeplex.com/

 

安装下载的软件,结果你会得到两个dll文件(Spire.License.dll和 Spire.Pdf.dll),如下图所示在你的程序中添加他们的引用:

 

 

创建PDF并设置它的格式

 

创建PDF和使用Spire.Pdf一样简单。这就意味着,仅仅用Spire.Pdf写几行代码就可以实现了。参照以下代码:

 

//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Create one page
PdfPageBase page = doc.Pages.Add();
//Draw the text
page.Canvas.DrawString("Hello, I'm Created By SPIRE.PDF!",
new PdfFont(PdfFontFamily.TimesRoman, 30f),
new PdfSolidBrush(Color.Black), 1010);
//Save pdf file.
doc.SaveToFile("MyFirstPDF.pdf");
doc.Close();

 

以上代码创建了一个单页的PDF文件

 

 

 现在我们在同一个PDF文件中再加点料,像边框啊,水印啦,再加一些有格式设置的图片。我为了让我这篇教程看上去比较简洁,就把所有代码附在了示例中。它是一个包含了所有代码的小型windows窗口程序,你可以从这里下载

 

转换成其它格式并设置相应的格式:

 

基本上每个程序员都被这类的需求困扰过。从一种格式转换成另一种格式在开发模式中是一件痛苦的事情。举例来说,现在有很多程序员会问如何把HTML页面转换为PDFSpire.Pdf对这个问题给出了简单的解决方法。不仅仅如此,SPIRE.PDF还提供了如下的转换:

 

  HTML To PDF

·         XPS to PDF

·         PDF to XPS

·         PDF to Image

 

HTMLPDF的转换:

 

我上面说的,这是几乎每个开发人员都需要的功能。用 Spire.Pdf的话,转换简直是飞一般的感觉。Spire.Pdf包含创建方法“LoadFromHTML”,它可以用URL做为参数而返回一个PDF文件。

//create PdfDocument instance
PdfDocument doc = new PdfDocument();
//load html from URL
string url = "http://www.google.com";
var thread = new Thread(() =>
{
    doc.LoadFromHTML(url, falsetruetrue);
 
});
//set to single thread
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
//save to PDF document
doc.SaveToFile("FromHTML.pdf", FileFormat.PDF);
doc.Close();
System.Diagnostics.Process.Start("FromHTML.pdf");

 

从上面的几行代码中,你可以观察到我尝试从URL中创建一个PDF文件,只是一行叫做LoadFromHTML的方法就可以实现神奇的转换,下面几行为保存文件。下面在转换中有趣的事情就是SPIRE.PDF将链接地址的页面自动转换为PDF链接。

 

PDFXPS的转换:

 

XPS,是另外一个Microsoft2006年开发的流行文件格式。 Spire.Pdf也提供了将目标文件保存为XPS格式的选择。看下面代码, Spire.Pdf仅仅是加载了PDF文件并使用SaveToFile方法将文件保存为需要的格式。

 

//Input  pdf file
String file = @"G:\FromHTML.pdf";
//open pdf document
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(file);
//convert to xps file.
doc.SaveToFile(@"G:\PDFToXPS.xps", FileFormat.XPS);
doc.Close();

 

     

XPSPDF的转换:

Spire.Pdf 也提供了上述方法的逆向转换,那就是从XPSPDF的转换,有所不同的是加载文件方法的不同。这里我们使用方法LoadFromXPS就可以了。


//open xps document
PdfDocument doc = new PdfDocument();
doc.LoadFromXPS(file);
//convert to pdf file.
doc.SaveToFile("XPSToPDF.pdf");

 

Spire.Pdf使用枚举FileFormat,我们可以有4种格式的输出文件:DOC, HTML, PDF XPS

 

 


撷取PDF –PDF中撷取文本/图片

 

在平常工作中,我遇到过需要单独从PDF文件中撷取图片或文本的问题。

Spire.Pdf也给出了简洁的解决方案。做的很好的地方是,提供一个单行的代码就是调用“that”就搞定了。

 

//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Load the PDF Document
doc.LoadFromFile(@"G:\sample.pdf");
// Image collection to hold
IList<Image> images = new List<Image>();
// Loop thru each pages
foreach (PdfPageBase page in doc.Pages)
{
// Check that page contains any images
if (page.ExtractImages() != null)
{
     foreach (Image image in page.ExtractImages())
      {
         images.Add(image);
       }
 }
 }
//close the document
 doc.Close();
 //save image
int index = 0;
foreach (Image image in images)
{
  String imageFileName = String.Format("Image-{0}.png", index++);
  image.Save(imageFileName, ImageFormat.Png);
}

 

在以上代码中图片被保存为png格式,输出界面如下图:

 

 

PDF中撷取文本也是很简单。每个编程人员的职业生涯都会面对的撷取。Spire.Pdf可以用以下代码来解决:

 

//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Load the PDF Document
doc.LoadFromFile(@"G:\sample.pdf");
// String for hold the extracted text
StringBuilder buffer = new StringBuilder();
foreach (PdfPageBase page in doc.Pages)
{
    buffer.Append(page.ExtractText());
}
doc.Close();
//save text
String fileName = "TextInPdf.txt";
File.WriteAllText(fileName, buffer.ToString());
buffer = null;

上面的程序片段就将文本提取出来并生成名为TextInPdf.txt的文本文档。

结论

综上所述,换句话说,它用简单有效的方法处理PDF文件。SPIRE.PDF是一个很好的解决PDF API。

转载于:https://www.cnblogs.com/Yesi/p/4289981.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从观望到行动:全球工业物联网市场生态全景观察

来源&#xff1a;资本实验室在当前&#xff0c;诸如5G&#xff0c;物联网、边缘计算、人工智能、机器人、区块链、增材制造和虚拟现实/增强现实等技术正在加速融合到工业物联网&#xff08;Industrial Internet of Things&#xff0c;IIoT&#xff09;的肥沃土壤中&#xff0c;…

OC语言知识6

本文目录 一、异步POST请求二、NSURLConnection的其他请求方法上一讲介绍了iOS中的异步GET请求&#xff0c;这讲来看看异步POST请求。 回到顶部一、异步POST请求 假如请求路径是http://192.168.1.102:8080/MJServer/login&#xff0c;请求参数有2个&#xff1a; username &…

谁能引领国内人工智能芯片产业突围?

来源&#xff1a;国金证券摘要&#xff1a;我们认为中国在处理器/芯片领域的投资有加速的迹象&#xff0c;AI芯片的创业企业目前已达到40家左右。未来因人工智能边缘运算推理端和云端推理(Inferencing)芯片及设备成本,性能&#xff0c;耗电,效率的考量,以及各种处理器的特性不同…

OC语言知识12

本文目录 一、添加一个简单的图层二、添加一个显示图片的图层三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型&#xff0c;而不用UIColor和UIImage&#xff1f;四、UIView和CALayer的选择五、UIView和CALayer的其他关系* 上一讲已经说过&#xff0c;UIView内部默认…

计算机视觉介绍

1.为什么要学习图像处理和计算机视觉 计算机视觉市场需求大&#xff0c;其是人工智能的重要分支。 计算机视觉岗位占所有AI岗位的40%。 但是&#xff0c;中国高校目前尚未设置计算机视觉学科己专业&#xff1b;学习者众多&#xff0c;学习分散&#xff0c;缺少统一教学体系&a…

认识工业互联网

来源&#xff1a;智汇工业摘要&#xff1a;工业互联网是实现智能制造的抓手&#xff0c;推动工业互联网是长期的工作。工业互联网分为广义的工业互联网和狭义的工业互联网。广义的工业互联网就是第四次工业革命的代名词。和德国工业4.0以及中国制造2025类同&#xff0c;都是工业…

模式识别:绪论

模式识别(pattern recognition)&#xff1a;输入原始数据并根据其类别采取相应行为的能力。 具体实例&#xff1a;人脸识别、语音识别、文字识别、指纹识别、DNA序列分析。 要区分不同类别的个体&#xff0c;需要利用其一些物理特性上的差异&#xff0c;成为模式分类的特征。…

A16Z内部万字报告:人类与AI结合的最佳形态

来源&#xff1a;36Kr摘要&#xff1a;人工智能技术正在快速发展&#xff0c;将会给我们什么样的变化&#xff1f;人们应该如何与人工智能相处&#xff1f;近日&#xff0c;A16Z博客上放出了一篇内部报告&#xff0c;介绍了人工智能将会给我们的社会带来的变化&#xff0c;以及…

照明与图像

光通量&#xff1a; 人眼所能感受到的辐射功率&#xff0c;等于单位时间内某一波段的辐射能量和该波段的相对视见率的乘积。单位是lm(流明)1流明 0.00146瓦 辐照度 投射到一平表面上的辐射通量密度。指到达一表面上&#xff0c;单位时间&#xff0c;单位面积上的辐射能。以…

BZOJ3434 [Wc2014]时空穿梭

摔电脑摔电脑&#xff01;JZP业界毒瘤&#xff01; 400题纪念~哇终于上400了的说&#xff01;&#xff01;&#xff01;好不容易欸&#xff01; 题解什么的还是Orz iwtwiioi 我求组合数的方法明明是O(n)的&#xff0c;为什么这么慢&#xff01;&#xff01;&#xff01;令人报警…

图像平滑滤波

卷积与滤波概念 离散卷积 丢两个骰子&#xff0c;求点数加起来为 ttt 的概率是多少&#xff1f; 两个骰子加起来为4的概率&#xff1a; f(1)g(3)f(2)g(2)f(3)g(1)f(1)g(3) f(2)g(2) f(3)g(1)f(1)g(3)f(2)g(2)f(3)g(1) 写成卷积标准形式为&#xff1a; (f∗g)(4)∑i13f(i)g(…

从全球制造业的迁移史,看中国制造业未来会怎么走?

来源&#xff1a;挖数&#xff08;ID&#xff1a;washu66&#xff09;摘要&#xff1a;中国制造后续如何发展&#xff1f;翻开全球制造业的迁移史&#xff0c;看是否能从中看出一点端倪。1/ 全球制造业的迁移史1/ 第一次大迁移第一次制造业大迁移发生在20世纪初&#xff0c;由美…

应用|5G时代10大应用场景!

来源&#xff1a;数字化企业摘要&#xff1a;5G商用日益临近&#xff0c;大家可曾想过5G技术未来有哪些具体的应用场景呢&#xff1f;作为5G领跑者的华为公司&#xff0c;早在2年前就出了一份白皮书&#xff0c;这份报告探讨了最能体现5G能力的十大应用场景。简要列表如下1.云V…

央行发布论文:区块链能做什么,不能做什么?

来源&#xff1a;悟空智能科央行发布工作论文《区块链能做什么、不能做什么&#xff1f;》&#xff0c;论文称&#xff0c;不要夸大或迷信区块链的功能。区块链应用要立足实际情况。目前区块链投融资领域泡沫明显。论文从经济学角度研究了区块链的功能。首先&#xff0c;在给出…

UVa 1225 Digit Counting

题意&#xff1a;给出n,将前n个整数顺次写在一起&#xff0c;统计各个数字出现的次数。 用的最笨的办法--直接统计-- 后来发现网上的题解有先打表来做的 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 us…

人工智能产业发展联盟公布首轮AI芯片基准评测结果,评估工具已开源

来源&#xff1a;量子位3月6日&#xff0c;由国际电信联盟、中国信息通信研究院联合主办&#xff0c;人工智能产业发展联盟&#xff08;AIIA&#xff09;和中兴通讯承办的国际论坛“AI in 5G——引领新时代论坛”在深圳召开。来自全球电信运营商、标准组织、互联网企业、设备厂…

图像分割I

为什么要图像分割&#xff1f; 目标 掌握图像分割的基本概念了解图像分割方法分类 目标&#xff1a;将图像划分为不同区域定义&#xff1a;令集合R代表整个图像区域&#xff0c;对R的图像分割可以看作是将R分成N个满足以下条件的非空子集R1,R2,...,RNR_1,R_2,...,R_NR1​,R2​…

图像分割II

区域增长算法 目标 掌握区域生长法的基本思想掌握图像分裂合并分割的基本思想及步骤 区域生长法分割 大津算法的局限性&#xff1a;噪声比较严重的图片、分割目标颜色渐变的情况&#xff0c;分割效果差。 区域生长&#xff1a;从种子点开始&#xff0c;按照一定准则&#x…

205页PPT,看5G+AI引领的下一个时代!

来源&#xff1a;国泰君安证券、暴点摘要&#xff1a;为大家分享一份国泰君安证券关于“电子行业2019年春季投资策略&#xff0c;5GAI系列研究”报告&#xff0c;详看哪些产业将迎来黄金期。预计5G换机高峰期将出现在2020~2023年&#xff0c;届时手机出货量将恢复增长。同时&am…

图像表示与描述

图像表示与描述 目标 掌握常见的基于轮廓特征的描述掌握常见的图像区域特征描述 对目标特征的测量是要利用分割结果进一步从图像中获取有用信息&#xff0c;为达到这个目的需要解决两个关键问题&#xff1a; 选用什么特征来描述目标(定性)如何精确测量这些特征(定量) 常见…