博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#生成PDF总结
阅读量:5806 次
发布时间:2019-06-18

本文共 13316 字,大约阅读时间需要 44 分钟。

(一)C#生成PDF总结

(1)iTextSharp控件对iTextSharp研究还可以表格、文字、各种GDI对象,图片,水印,文字旋转

(2)aspose的控件
(3)PDF Library这个类库(只单纯是有文字的,表格和文字)http://www.codeproject.com/KB/dotnet/PdfLibrary.aspx 
(4)直接用.net的RDLC report 就可以啦,to PDF效果很好,也可以对付用户有变数,可以to 其他格式.

(二)iTextSharp生成PDF示列

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using iTextSharp.text;using iTextSharp.text.pdf;using System.IO;namespace PdfDemo{    ///     /// MainWindow.xaml 的交互逻辑    ///     public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        ///         /// 我得第一个Pdf程序        ///         private void CreatePdf()        {            string fileName = string.Empty;            Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();            dlg.FileName = "我的第一个PDF";            dlg.DefaultExt = ".pdf";            dlg.Filter = "Text documents (.pdf)|*.pdf";            Nullable
result = dlg.ShowDialog(); if (result == true) { fileName = dlg.FileName; Document document = new Document(); PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create)); document.Open(); iTextSharp.text.Paragraph paragraph = new iTextSharp.text.Paragraph("Hello World"); document.Add(paragraph); document.Close(); }//end if } ///
/// 设置页面大小、作者、标题等相关信息设置 /// private void CreatePdfSetInfo() { string fileName = string.Empty; Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "我的第一个PDF"; dlg.DefaultExt = ".pdf"; dlg.Filter = "Text documents (.pdf)|*.pdf"; Nullable
result = dlg.ShowDialog(); if (result == true) { fileName = dlg.FileName; //设置页面大小 iTextSharp.text.Rectangle pageSize = new iTextSharp.text.Rectangle(216f, 716f); pageSize.BackgroundColor = new iTextSharp.text.BaseColor(0xFF, 0xFF, 0xDE); //设置边界 Document document = new Document(pageSize, 36f, 72f, 108f, 180f); PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create)); // 添加文档信息 document.AddTitle("PDFInfo"); document.AddSubject("Demo of PDFInfo"); document.AddKeywords("Info, PDF, Demo"); document.AddCreator("SetPdfInfoDemo"); document.AddAuthor("焦涛"); document.Open(); // 添加文档内容 for (int i = 0; i < 5; i++) { document.Add(new iTextSharp.text.Paragraph("Hello World! Hello People! " + "Hello Sky! Hello Sun! Hello Moon! Hello Stars!")); } document.Close(); }//end if } ///
/// 创建多个Pdf新页 /// private void CreateNewPdfPage() { string fileName = string.Empty; Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "创建多个Pdf新页"; dlg.DefaultExt = ".pdf"; dlg.Filter = "Text documents (.pdf)|*.pdf"; Nullable
result = dlg.ShowDialog(); if (result == true) { fileName = dlg.FileName; Document document = new Document(PageSize.NOTE); PdfWriter writer= PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create)); document.Open(); // 第一页 document.Add(new iTextSharp.text.Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1")); document.Add(new iTextSharp.text.Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1")); document.Add(new iTextSharp.text.Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1")); document.Add(new iTextSharp.text.Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1")); // 添加新页面 document.NewPage(); // 第二页 // 添加第二页内容 document.Add(new iTextSharp.text.Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2")); document.Add(new iTextSharp.text.Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2")); document.Add(new iTextSharp.text.Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2")); document.Add(new iTextSharp.text.Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2")); document.Add(new iTextSharp.text.Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2")); document.Add(new iTextSharp.text.Paragraph("PDF2, PDF2, PDF2, PDF2, PDF2")); // 添加新页面 document.NewPage(); // 第三页 // 添加新内容 document.Add(new iTextSharp.text.Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3")); document.Add(new iTextSharp.text.Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3")); document.Add(new iTextSharp.text.Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3")); document.Add(new iTextSharp.text.Paragraph("PDF3, PDF3, PDF3, PDF3, PDF3")); // 重新开始页面计数 document.ResetPageCount(); // 新建一页 document.NewPage(); // 第四页 // 添加第四页内容 document.Add(new iTextSharp.text.Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4")); document.Add(new iTextSharp.text.Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4")); document.Add(new iTextSharp.text.Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4")); document.Add(new iTextSharp.text.Paragraph("PDF4, PDF4, PDF4, PDF4, PDF4")); document.Close(); }//end if } ///
/// 生成图片pdf页(pdf中插入图片) /// public void ImageDirect() { string imagePath = AppDomain.CurrentDomain.BaseDirectory + @"Image\1.jpg"; //临时文件路径 string fileName = string.Empty; Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "我的第一个PDF"; dlg.DefaultExt = ".pdf"; dlg.Filter = "Text documents (.pdf)|*.pdf"; Nullable
result = dlg.ShowDialog(); if (result == true) { fileName = dlg.FileName; Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create)); document.Open(); iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imagePath); img.SetAbsolutePosition((PageSize.POSTCARD.Width - img.ScaledWidth) / 2, (PageSize.POSTCARD.Height - img.ScaledHeight) / 2); writer.DirectContent.AddImage(img); iTextSharp.text.Paragraph p = new iTextSharp.text.Paragraph("Foobar Film Festival", new iTextSharp.text.Font(Font.FontFamily.HELVETICA, 22f)); p.Alignment = Element.ALIGN_CENTER; document.Add(p); document.Close(); }//end if } private void ReadPdf() { Console.WriteLine("读取PDF文档"); try { // 创建一个PdfReader对象 PdfReader reader = new PdfReader(@"D:\技术文档\sj\C#线程参考手册.pdf"); // 获得文档页数 int n = reader.NumberOfPages; // 获得第一页的大小 iTextSharp.text.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++; PdfImportedPage page1 = writer.GetImportedPage(reader, i); cb.AddTemplate(page1, .5f, 0, 0, .5f, 0, height / 2); Console.WriteLine("处理第 " + i + " 页"); if (i < n) { i++; PdfImportedPage page2 = writer.GetImportedPage(reader, i); cb.AddTemplate(page2, .5f, 0, 0, .5f, width / 2, height / 2); Console.WriteLine("处理第 " + i + " 页"); } if (i < n) { i++; PdfImportedPage page3 = writer.GetImportedPage(reader, i); cb.AddTemplate(page3, .5f, 0, 0, .5f, 0, 0); Console.WriteLine("处理第 " + i + " 页"); } if (i < n) { i++; PdfImportedPage page4 = writer.GetImportedPage(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); } } ///
/// 创建表格 /// public void CreateFirstTable() { string imagePath = AppDomain.CurrentDomain.BaseDirectory + @"Image\1.pm"; //临时文件路径 string fileName = string.Empty; Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "我的第一个PDF"; dlg.DefaultExt = ".pdf"; dlg.Filter = "Text documents (.pdf)|*.pdf"; Nullable
result = dlg.ShowDialog(); if (result == true) { fileName = dlg.FileName; Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create)); document.Open(); PdfPTable table = new PdfPTable(3); PdfPCell cell; cell=new PdfPCell(new Phrase("Cell with colspan 3")); cell.Colspan = 3; table.AddCell(cell); cell = new PdfPCell(new Phrase("Cell with rowspan 2")); cell.Rowspan = 2; table.AddCell(cell); table.AddCell("row 1; cell 1"); table.AddCell("row 1; cell 2"); table.AddCell("row 2; cell 1"); table.AddCell("row 2; cell 2"); document.Add(table); document.Close(); }//end if } private void button1_Click(object sender, RoutedEventArgs e) { //CreatePdf(); //CreatePdfPageSize(); CreateNewPdfPage(); } private void button2_Click(object sender, RoutedEventArgs e) { CreateFirstTable(); } private void button3_Click(object sender, RoutedEventArgs e) { ImageDirect(); } private void button4_Click(object sender, RoutedEventArgs e) { ReadPdf(); } }}

(三)代码下载

(三)参考链接

http://www.cnbeta.com/articles/60484.htm 在线导出PDF的好去处

http://bbs.csdn.net/topics/310095053 PDF导出的讨论
http://www.cnblogs.com/EKPK/archive/2009/06/04/1495867.html 用C#制作PDF文件全攻略
http://blog.csdn.net/aasswwe/article/details/7639768
http://blog.sina.com.cn/s/blog_82662ce70100t0s6.html Pdf常见用法
http://www.tuicool.com/articles/nuyAFz HTML生成PDF(c#)
http://stackoverflow.com/questions/tagged/itextsharp itextsharp相关问题 
http://www.itextpdf.com/book/examples.php 官方文档,虽然是Java版本的但类库略有不同,在java中一些getFunction和setFunction在C#转为属性,可以作为参考文档。

你可能感兴趣的文章
11.排序算法_6_归并排序
查看>>
Redis redis-cli 命令列表
查看>>
.NET框架设计—常被忽视的框架设计技巧
查看>>
BigDecimal 舍入模式(Rounding mode)介绍
查看>>
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
git reset 三种用法总结
查看>>
hdfs笔记
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>