C# 创建、读取PDF文档

生成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文件夹中获取。

一、创建PDF文档

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

读取结果:

1.2 读取指定区域文本

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

读取结果:
(此时读取的就只是指定区域内的文本)

2. 读取PDF图片

C#

using Spire.Pdf;
using System.Collections.Generic;
using System.Drawing;

namespace ExtractImages_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个PdfDocument类对象,加载PDF测试文档
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("sample.pdf");

            //声明List类对象
            List<Image> ListImage = new List<Image>();

            //遍历PDF文档所有页面
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                //获取文档所有页,并提取页面中的所有图片
                PdfPageBase page = doc.Pages[i];
                Image[] images = page.ExtractImages();
                if (images != null && images.Length > 0)
                {
                    ListImage.AddRange(images);
                }

            }
            //将获取到的图片保存到本地路径
            if (ListImage.Count > 0)
            {
                for (int i = 0; i < ListImage.Count; i++)
                {
                    Image image = ListImage[i];
                    image.Save("image" + (i + 1).ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);
                }
                //打开获取到的图片
                System.Diagnostics.Process.Start("image1.png");
            }

        }
    }
}

读取结果:

原文地址:http://blog.51cto.com/eiceblue/2097531

时间: 2024-08-26 08:07:17

C# 创建、读取PDF文档的相关文章

【Win10 开发】读取PDF文档

关于用来读取PDF文档的内容的API,其实在Win8.1的时候就有,不过没关系,既咱们讨论的是10的UAP,连同8.1的内容也包括进去,所以老周无数次强调:把以前的内容学好了,就可以在不学习任何新知识的前提直接进入10的开发,至于你信不信,反正我信了. 好,P话不扯了,今天刚升级了Build 10061,VS创建UAP并运行是没什么问题的,不过XAML设计器貌似不太听话,比较淘气:还有个别API有问题,虽然异常报的是CLR损坏,但我们知道RT其实是基于COM的形式注册的,实际上是Win32的数据

使用iTextSharp读取PDF文档

网上有很多获取pdf页数方法有读流判断type/page的但是经过实际测试文件太大的时候往往不是很准确,既然这样我们就不用费心去自己写了可以用itextsharp. 这里是下载地址:http://sourceforge.net/projects/itextsharp/files/ (1)创建一个Windows控制台应用程序,命名为ReadPdfDemo.(2)添加对iTextSharp的引用.(3)在“Program.cs”文件中添加如下引用.using System;using System.

Python读取PDF文档

1 from pdfminer.converter import PDFPageAggregator 2 from pdfminer.layout import LAParams 3 from pdfminer.pdfparser import PDFParser 4 from pdfminer.pdfparser import PDFDocument 5 from pdfminer.pdfinterp import PDFResourceManager 6 from pdfminer.pdfi

[Swift通天遁地]七、数据与安全-(8)创建普通PDF文档和加密PDF文档

本文将演示使用开源类库实现创建普通PDF文档和加密PDF文档. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'PDFGenerator' 7 end 根据配置文件中的相关配置,安装第三方库. 在项目导航区,打开视

java读取pdf文档

import java.io.*;import org.pdfbox.pdmodel.PDDocument;import org.pdfbox.pdfparser.PDFParser;import org.pdfbox.util.PDFTextStripper; public class PDFReader {  public static String file_path = "F:/pdf/网易技术部的MySQL中文资料.pdf"; // 获取PDF内纯文本信息 public St

C#读取PDF文档内容

一.下载PDFBox 访问网址http://sourceforge.net/projects/pdfbox/ (这个绝对是个好网站) 二.引用动态链接库 解压缩下载的PDFBox,找到其中的Bin目录,需要在项目中添加引用的dll文件有:    IKVM.GNU.Classpath.dll    PDFBox-0.7.3.dll    FontBox-0.1.0-dev.dll    IKVM.Runtime.dll 将以上4个文件引用到项目中,在文件中需要引入以下2个命名空间:    usin

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

Quartz 2D编程指南- PDF文档的创建、显示及转换

PDF文档存储依赖于分辨率的向量图形.文本和位图,并用于程序的一系列指令中.一个PDF文档可以包含多页的图形和文本.PDF可用于创建跨平台.只读的文档,也可用于绘制依赖于分辨率的图形.         Quartz为所有应用程序创建高保真的PDF文档,这些文档保留应用的绘制操作,如图13-1所示.PDF文档的结果将通过系统的其它部分或第三方法的产品来有针对性地进行优化.Quartz创建的PDF文档在Preview和Acrobat中都能正确的显示. Quartz不仅仅只使用PDF作为它的数字页,它

常用PDF文档开发库

C++库: 1,PDF类库 PoDoFo   http://podofo.sourceforge.net/  PoDoFo 是一个用来操作 PDF 文件格式的 C++ 类库.它还包含一些小工具用来解析.修改和创建 PDF 文 2,Xpdf http://www.foolabs.com/xpdf/download.html   Xpdf是一个开放源代码的PDF档案浏览器,Xpdf 可解码LZW压缩格式并阅读加密的PDF文件 3,PDF生成工具 Poppler http://poppler.free