标签:
生成PDF文档我们凡是可以通过文档转换的形式来得到想要的PDF,但我们也可以通过最直接的方法来创建PDF文档,由此本篇文章将介绍C#如何来创建带图、文元素的PDF文档。同理,对付需要读取PDF文档的情况,我们也可以分情况来读取想要的文档元素(文本、图片)。不才面的示例中将做详细介绍。 示例要点梳理:一、创建PDF文档(可撑持中文)
1.写入文本(包孕页边距、字体、字号等设置)
2.绘入图片
二、读取PDF文档
1.读取文本
1.1读取全部文本
1.2读取指定区域文本
2.读取图片
使用工具:Free Spire.PDF for .NET4.3 (最新免费版)
注:在编纂代码前引用Spire.PDF.dll,dll文件可在安置路径下的Bin文件夹中获取。
C#
using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; namespace CreatePDF_PDF { class Program { static void Main(string[] args) { //初始化一个PdfDocument类实例 PdfDocument document = new PdfDocument(); //声明 PdfUnitConvertor和PdfMargins类东西 PdfUnitConvertor unitCvtr = new PdfUnitConvertor(); PdfMargins margins = new PdfMargins(); //设置页边距 margins.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margins.Bottom = margins.Top; margins.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margins.Right = margins.Left; //新添加一个A4巨细的页面 PdfPageBase page = document.Pages.Add(PdfPageSize.A4, margins); //自界说PdfTrueTypeFont、PdfPen实例,设置字体类型、字号和字体颜色 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("楷体", 11f),true); PdfPen pen = new PdfPen(Color.Black); //挪用DrawString()要领在指定位置写入文本 string text = ("《蝶恋花 送春》 \n 楼外垂杨千万缕,,欲系芳华,少住春还去。犹自风前飘柳絮,随春且看归何处?\n 绿满山川闻杜宇,便作无情,莫也愁人苦。把酒送春春不语,黄昏却下潇潇雨。"); page.Canvas.DrawString(text, font, pen, 15, 13); //加载图片,并挪用DrawImage()要领在指定位置绘入图片 PdfImage image = PdfImage.FromFile("image1.jpg"); float width = image.Width * 0.55f; float height = image.Height * 0.55f; float y = (page.Canvas.ClientSize.Width - width) / 3; page.Canvas.DrawImage(image, y, 60, width, height); //生存并打开文档 document.SaveToFile("PDF创建.pdf"); System.Diagnostics.Process.Start("PDF创建.pdf"); } } }创建功效:
这里创建PDF文档,Spire.PDF撑持直接生成PDF文档并同时实现添加文本、图片、图形、水印、表格、页眉页脚、页码等操纵,这里示例代码以添加文本、图片为例,有需要可以参见以下博客:
using Spire.Pdf; using System; using System.IO; using System.Text; namespace ExtractText_PDF { class Program { static void Main(string[] args) { //实例化PdfDocument类东西,并加载PDF文档 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("sample.pdf"); //实例化一个StringBuilder 东西 StringBuilder content = new StringBuilder(); //遍历文档所有PDF页面,提取文本 foreach (PdfPageBase page in doc.Pages) { content.Append(page.ExtractText()); } //将提取到的文本写为.txt格局并生存到本地路径 String fileName = "获取文本.txt"; File.WriteAllText(fileName, content.ToString()); System.Diagnostics.Process.Start("获取文本.txt"); } } }读取功效:
C#
using Spire.Pdf; using System.IO; using System.Text; using System.Drawing; namespace ExtractText1_PDF { class Program { static void Main(string[] args) { //创建PdfDocument类实例,并加载PDF文档 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("sample.pdf"); //获取PDF第一页 PdfPageBase page = pdf.Pages[0]; //从第一页的指定矩形区域内提取文本 string text = page.ExtractText(new RectangleF(50, 50, 500, 170)); //生存文本到.txt文件,并打开文档 StringBuilder sb = new StringBuilder(); sb.AppendLine(text); File.WriteAllText("Extract.txt", sb.ToString()); System.Diagnostics.Process.Start("Extract.txt"); } } }读取功效:
(此时读取的就只是指定区域内的文本)