C#创建、读取PDF

标签:
c创建读取pdf利用itextsharp |
创建PDF文档
class
Program
{
static
void Main(string[] args)
{
Console.WriteLine("创建一个PDF文档");
// 创建一个Document对象
Document document = new Document();
try
{
// 创建文档
PdfWriter.GetInstance(document, new FileStream(@"c:\Create.pdf",
FileMode.Create));
// 打开文档
document.Open();
document.Add(new Paragraph("PDF"));
document.Add(new Paragraph("PDF"));
document.Add(new Paragraph("PDF"));
document.Add(new Paragraph("PDF"));
document.Add(new Paragraph("PDF"));
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// 关闭文档
document.Close();
}
}
class
Program
{
static void Main(string[] args)
{
Console.WriteLine("设置页面大小");
// 设置页面
Rectangle pageSize = new Rectangle(320, 240);
pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);
Document document = new Document(pageSize);
try
{
//创建文档
PdfWriter.GetInstance(document, new FileStream(@"C:\Size.pdf",
FileMode.Create));
// 打开文档
document.Open();
// 添加文档内容
for (int i = 0; i < 5; i++)
{
document.Add(new Paragraph("PDF ,PDF ,PDF ,PDF ,PDF"));
}
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// 关闭文档
document.Close();
}
}
Console.WriteLine("设置边界");
// 声明文档变量
Document document = new Document(PageSize.A5, 36, 72, 108,
180);
try
{
// 创建PDF文档
PdfWriter.GetInstance(document, new FileStream(@"c:\Margin.pdf",
FileMode.Create));
// 打开文档
document.Open();
// 添加部分内容
Paragraph paragraph = new Paragraph();
paragraph.Alignment = Element.ALIGN_JUSTIFIED;
for (int i = 0; i < 20; i++)
{
paragraph.Add("PDF, PDF, PDF, PDF, PDF, PDF, PDF, PDF, PDF, PDF,
PDF, PDF, PDF, PDF");
}
document.Add(paragraph);
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// 关闭文档
document.Close();
}
}
class
Program
{
static void Main(string[] args)
{
Console.WriteLine("设置信息");
// 声明文档变量
Document document = new Document();
try
{
// 创建文档
PdfWriter.GetInstance(document,
new FileStream(@"C:\Info.pdf", FileMode.Create));
// 添加文档信息
document.AddTitle("PDFInfo");
document.AddSubject("Demo of PDFInfo");
document.AddKeywords("Info, PDF, Demo");
document.AddCreator("SetPdfInfoDemo");
document.AddAuthor("Z");
document.Open();
// 添加文档内容
document.Add(new Paragraph("PDF, PDF, PDF, PDF, PDF"));
document.Add(new
Paragraph("PDF, PDF, PDF, PDF, PDF"));
document.Add(new Paragraph("PDF, PDF, PDF, PDF, PDF"));
document.Add(new Paragraph("PDF, PDF, PDF, PDF, PDF"));
document.Add(new Paragraph("PDF, PDF, PDF, PDF, PDF"));
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// 关闭文档
document.Close();
}
}
class
Program
{
static void Main(string[] args)
{
Console.WriteLine("新建文档页面");
// 声明文档变量
Document document = new Document();
try
{
// 创建PDF文档
PdfWriter.GetInstance(document, new FileStream(@"C:\NewPage.pdf",
FileMode.Create));
// 在第一页添加页眉
HeaderFooter header = new HeaderFooter(new Phrase("PDF11111"),
false);
document.Header = header;
// 打开文档
document.Open();
// 第二页是横向的A4
document.SetPageSize(PageSize.A4.Rotate());
// 添加页脚
HeaderFooter footer = new HeaderFooter(new Phrase("PDF22222 "),
true);
document.Footer = footer;
// 第一页内容
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
//
新建一页
document.NewPage();
// 第二页内容
// 添加第二页内容
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
// 从下页开始取消页眉
document.ResetHeader();
// 新建一页
document.NewPage();
// 第三页内容
// 添加第三页内容
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new
Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
// 重新开始页面计数
document.ResetPageCount();
// 新建一页
document.NewPage();
// 第四页
// 添加第四页内容
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new
Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// 关闭文档
document.Close();
}
}
class
Program
{
static void Main(string[] args)
{
Console.WriteLine("添加其他内容");
// 声明文档变量
Document document = new Document();
try
{
// 创建几个PDF文档
PdfWriter writerA = PdfWriter.GetInstance(document, new FileStream
(@"C:\Other1.pdf", FileMode.Create));
writerA.ViewerPreferences =
PdfWriter.PageLayoutTwoColumnLeft;
PdfWriter writerB = PdfWriter.GetInstance(document, new FileStream
(@"C:\Other2.pdf", FileMode.Create));
writerB.ViewerPreferences = PdfWriter.HideMenubar | PdfWriter.
HideToolbar;
PdfWriter writerC = PdfWriter.GetInstance(document, new FileStream
(@"C:\Other3.pdf", FileMode.Create));
writerC.ViewerPreferences = PdfWriter.PageLayoutTwoColumnLeft |
PdfWriter.PageModeFullScreen |
PdfWriter.NonFullScreenPageModeUseThumbs;
// 添加页眉
HeaderFooter header = new HeaderFooter(new Phrase("This is a
header"), false);
document.Header = header;
// 打开文档
document.Open();
// 转换为横向A4幅面
document.SetPageSize(PageSize.A4.Rotate());
// 添加页脚
HeaderFooter footer = new HeaderFooter(new Phrase("This is page:
"), true);
document.Footer = footer;
// 向页面上添加内容
// 第一页
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
document.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));
// 添加新页面
document.NewPage();
// 第二页
// 添加第二页内容
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
document.Add(new Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2"));
// 取消页眉
document.ResetHeader();
//
添加新页面
document.NewPage();
// 第三页
// 添加新内容
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
document.Add(new Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3"));
// 重新开始页面计数
document.ResetPageCount();
// 新建一页
document.NewPage();
// 第四页
// 添加第四页内容
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
document.Add(new Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4"));
}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// 关闭文档
document.Close();
}
}
class
Program
{
static void Main(string[] args)
{
Console.WriteLine("读取PDF文档");
try
{
// 创建一个PdfReader对象
PdfReader reader = new PdfReader(@"C:\origin.pdf");
// 获得文档页数
int n =
reader.NumberOfPages;
// 获得第一页的大小
Rectangle psize = reader.GetPageSize(1);
float width = psize.Width;
float height = psize.Height;
// 创建一个文档变量
Document document = new Document(psize, 50, 50, 50, 50);
// 创建该文档
PdfWriter writer = PdfWriter.GetInstance(document, new
FileStream(@"C:\Read.pdf", FileMode.Create));
// 打开文档
document.Open();
//
添加内容
PdfContentByte cb = writer.DirectContent;
int i = 0;
int p = 0;
Console.WriteLine("一共有 " + n + " 页.");
while (i < n)
{
document.NewPage();
p++;
i++;
PdfImp ortedPage page1 =
writer.GetImp ortedPage(reader, i);
cb.AddTemplate(page1, .5f, 0, 0, .5f, 0, height / 2);
Console.WriteLine("处理第 " + i + " 页");
if (i < n)
{
i++;
PdfImp ortedPage page2 =
writer.GetImp ortedPage(reader, i);
cb.AddTemplate(page2, .5f, 0, 0, .5f, width / 2, height / 2);
Console.WriteLine("处理第 " + i + " 页");
}
if (i < n)
{
i++;
PdfImp ortedPage page3 =
writer.GetImp ortedPage(reader, i);
cb.AddTemplate(page3, .5f, 0, 0, .5f, 0, 0);
Console.WriteLine("处理第 " + i + " 页");
}
if (i < n)
{
i++;
PdfImp ortedPage
page4 = writer.GetImp ortedPage(reader, i);
cb.AddTemplate(page4, .5f, 0, 0, .5f, width / 2, 0);
Console.WriteLine("处理第 " + i + " 页");
}
cb.SetRGBColorStroke(255, 0, 0);
cb.MoveTo(0, height / 2);
cb.LineTo(width, height / 2);
cb.Stroke();
cb.MoveTo(width / 2, height);
cb.LineTo(width / 2, 0);
cb.Stroke();
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA,
BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.BeginText();
cb.SetFontAndSize(bf, 14);
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "page " + p + " of
" + ((n / 4) + (n % 4 > 0 ? 1 : 0)), width / 2, 40,
0);
cb.EndText();
}
// 关闭文档
document.Close();
}
catch (Exception de)
{
Console.Error.WriteLine(de.Message);
Console.Error.WriteLine(de.StackTrace);
}
}
}
PDF文档格式是网络中一种重要的文档格式,在某些领域应用比Office系列文档格式还要广泛。因此在应用程序的需求中经常需要对PDF格式的文档进行创建、修改和读取等操作。本节将介绍PDF文档的创建。
1.目的说明
本实例主要介绍如何创建PDF文档。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为CreatePDFDemo。
(2)添加对iTextSharp的引用,iTextSharp是一个开源的PDF操作类库。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
namespace CreatePDFDemo
{
}
3.运行结果
运行程序,结果如图8.44所示。
图8.44
运行结果
可以使用Adobe
Reader来查看在C盘根目录下生成的PDF文档,如图8.45所示。
图8.45 运行结果
8.13 设置PDF文档页面大小
PDF文档是可以设置页面大小的,之前创建的PDF文档是默认大小的。本节将介绍在创建PDF文档时,进行文档页面大小的设置。
1.目的说明
本实例主要介绍如何设置PDF文档页面的大小。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为SetPdfSizeDemo。
(2)添加对iTextSharp的引用。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
namespace SetPdfSizeDemo
{
}
3.运行结果
运行程序,结果如图8.46所示。
图8.46
运行结果
打开创建的PDF文档,如图8.47所示。
图8.47 运行结果
8.14 设置PDF文档边界
同Office中的Word文档一样,PDF文档也可以设置文档的格式,比如文档边界等。本节将介绍如何在C#中生成PDF文档的时候设置PDF文档的边界。
1.目的说明
本实例主要介绍如何设置PDF文档边界。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为SetPdfMarginDemo。
(2)添加对iTextSharp的引用。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using System.Diagnostics;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
}
3.运行结果
运行程序,结果如图8.48所示。
打开创建的PDF文档,如图8.49所示。
http://book.csdn.net/BookFiles/682/img/image049.jpg
http://book.csdn.net/BookFiles/682/img/image050.jpg
图8.48
运行结果
图8.49 运行结果
8.15
设置PDF文档信息
PDF文档中可以包含一些与文档内容本身无关的信息,这部分信息可以包括文档的题目和作者名等一些额外的信息,便于对PDF文档进行其他处理。本节将介绍设置PDF文档信息的方法。
1.目的说明
本实例主要介绍如何设置PDF文档信息。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为SetPdfInfoDemo。
(2)添加对iTextSharp的引用。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
namespace SetPdfInfoDemo
{
}
3.运行结果
运行程序,结果如图8.50所示。
图8.50
运行结果
查看创建的PDF文档,如图8.51所示。单击“文件”|“属性”命令,可以查看文档的信息,如图8.52所示。
图8.51
运行结果
图8.52 文档信息
8.16 新建PDF文档页
与Office中的Word文档一样,一个PDF文档是由很多PDF页面构成的,可以在C#中很方便地对这些不同的页面进行控制。本节将介绍新建PDF文档页面的内容。
1.目的说明
本实例主要介绍如何新建PDF文档页。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为CreatePdfPageDemo。
(2)添加对iTextSharp的引用。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
namespace CreatePdfPageDemo
{
}
3.运行结果
运行程序,结果如图8.53所示。
图8.53
运行结果
打开创建的PDF文档,第一页如图8.54所示。
图8.54 第一页
第二页如图8.55所示。第三页如图8.56所示。
图8.55
第二页
图8.56
第三页
第四页如图8.57所示。
图8.57 第四页
8.17
设置PDF文档的默认格式
PDF文档除了能够以默认的格式进行显示以外,还有多种其他的显示格式,这些显示格式可以在创建PDF文档时进行设置。本节介绍这方面的内容。
1.目的说明
本实例主要介绍如何设置PDF文档的默认格式。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为CreatePdfOtherDemo。
(2)添加对iTextSharp的引用。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
namespace CreatePdfOtherDemo
{
}
3.运行结果
运行程序,结果如图8.58所示。
图8.58
运行结果
程序中一次创建了三个PDF文档,其中Other1.pdf如图8.59所示,即一次显示多个文档。
图8.59
Other1文档的显示形式
Other2.pdf如图8.60所示,隐藏了菜单栏和工具栏,分页显示。
图8.60
Other2文档的显示形式
Other3.pdf如图8.61所示,Adobe
Reader会提示是否进入全屏显示。单击“是”按钮,如图8.62所示。
图8.61
Other3文档的显示形式
图8.62 Other3文档的显示形式
8.18
读取PDF文档
之前在各个实例中介绍了如何创建各种类型的PDF文档,并进行了不同的设置。本节将主要介绍如何从已有的PDF文档中读取现有的内容。
1.目的说明
本实例主要介绍如何读取PDF文档。
2.操作步骤
(1)创建一个Windows控制台应用程序,命名为ReadPdfDemo。
(2)添加对iTextSharp的引用。
(3)在“Program.cs”文件中添加如下引用。
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
(4)直接修改“Program.cs”文件的代码如下。
namespace ReadPdfDemo
{
}
3.运行结果
运行程序,结果如图8.63所示。
查看创建的PDF文档,如图8.64所示。
http://book.csdn.net/BookFiles/682/img/image064.jpg
http://book.csdn.net/BookFiles/682/img/image065.jpg
图8.63
运行结果
图8.64
运行结果