ITextSharp就不多介绍了,下面就把遇到的坑一一记录下来,希望能够帮助到正在使用它的开发者们。操作pdf的方法都被作者封装好了,只是没有注释和说明,不过大部分的方法属性还是能看懂的,看不懂的可以反编译一下。

gethub下载dll地址:https://github.com/itext/itextsharp/tags

1.输入文字不显示中文,文字换行

2.文字加颜色、字体大小、加粗、斜体、居中等骚操作

3.表格行合并、表格列合并

4.添加新页面

5.图片等比缩放、页面中心显示

下面代码演示:

首先添加几个dll

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
private void SavePDF(HttpContext context){Document document = new Document();//中文字体string chinese = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "KAIU.TTF");BaseFont baseFont = BaseFont.CreateFont(chinese, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//文字大小12,文字样式Font cn = new Font(baseFont, 12, Font.NORMAL);PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"D:\temp.pdf", FileMode.Create));document.Open();//最后一个参数是颜色,这里可以是rgb格式,也可以是默认定义的var title = new Paragraph("\n 这是一条标题0.0  hello ", new Font(baseFont, 14, Font.BOLD, BaseColor.RED));//居中title.Alignment = Element.ALIGN_CENTER;document.Add(title);Paragraph p = new Paragraph(" \n this is Second title \n ", cn);//Phrase p = new Phrase("这是一条标题0.0  hello", cn);p.Alignment = Element.ALIGN_CENTER;document.Add(p);//添加表格PdfPTable table = new PdfPTable(3);PdfPCell cell = new PdfPCell();table.AddCell("Row");cell = new PdfPCell(new Phrase("Cell"));cell.Colspan = 2;table.AddCell(cell);table.AddCell("row");cell = new PdfPCell(new Phrase("Cell"));cell.Colspan = 2;table.AddCell(cell);cell = new PdfPCell(new Phrase("Row"));cell.Rowspan = 2;table.AddCell(cell);table.AddCell("Cell");table.AddCell("Cell");table.AddCell("Cell");table.AddCell("Cell");table.HorizontalAlignment = Element.ALIGN_CENTER;document.Add(table);//新页面document.NewPage();document.Add(new Paragraph("Second page pic", cn));Image img = Image.GetInstance("E:/VsTest/testWeb/testWeb/Files/ts20171204.002.jpeg");float percentage = 1;//这里都是图片最原始的宽度与高度  float resizedWidht = img.Width;float resizedHeight = img.Height;//这时判断图片宽度是否大于页面宽度减去也边距,如果是,那么缩小,如果还大,继续缩小,  //这样这个缩小的百分比percentage会越来越小  while (resizedWidht > (document.PageSize.Width - document.LeftMargin - document.RightMargin) * 0.8){percentage = percentage * 0.9f;resizedHeight = img.Height * percentage;resizedWidht = img.Width * percentage;}while (resizedHeight > (document.PageSize.Height - document.TopMargin - document.BottomMargin) * 0.8){percentage = percentage * 0.9f;resizedHeight = img.Height * percentage;resizedWidht = img.Width * percentage;}//这里用计算出来的百分比来缩小图片  img.ScalePercent(percentage * 100);//图片定位,页面总宽283,高416;这里设置0,0的话就是页面的左下角 让图片的中心点与页面的中心店进行重合  img.SetAbsolutePosition(document.PageSize.Width / 2 - resizedWidht / 2, document.PageSize.Height / 2 - resizedHeight / 2);writer.DirectContent.AddImage(img);document.Close();}

最后看看效果

下面是该dll里面的字体和颜色集合

//public const int NORMAL = 0;//public const int BOLD = 1;//public const int ITALIC = 2;//public const int UNDERLINE = 4;//public const int STRIKETHRU = 8;//public const int BOLDITALIC = 3;//public const int UNDEFINED = -1;//public const int DEFAULTSIZE = 12;//public static readonly BaseColor WHITE;//public static readonly BaseColor BLUE;//public static readonly BaseColor CYAN;//public static readonly BaseColor MAGENTA;//public static readonly BaseColor GREEN;//public static readonly BaseColor ORANGE;//public static readonly BaseColor YELLOW;//public static readonly BaseColor RED;//public static readonly BaseColor BLACK;//public static readonly BaseColor DARK_GRAY;//public static readonly BaseColor GRAY;//public static readonly BaseColor LIGHT_GRAY;//public static readonly BaseColor PINK;

这里说说表格里面的PdfPTable,这个东西只能初始化他的列,表格里面add的时候是从左到右一行一行里面的单元格添加的,所以你添加的时候可以想象成输出乘法表那样。这里合并行的方法就是Colspan,列就是Rowspan,但是这里是属性。。。int类型数字几就是合并几行或者几列这样。。。其实一开始我以为不管是行合并列合并都是合并,应该有一个cell.row.merge(2)什么的,虽然不人性化但是习惯就好。

图片image对象就有意思了,它有宽和长度属性,但是长度是只读的,而且设置了宽度程序运行的时候会出错,哈哈哈。。。。这就尴尬了,所以最后用image的ScalePercent方法。。

ITextSharp生成PDF相关推荐

  1. 使用 iTextSharp 生成 PDF 表格

    iTextSharp 5 已经取消了 Table 类,我对照着一份 iTextSharp 4 的帮助文档,使用 VS 的智能提示找遍了所有的命名空间,都找不到 Table 类,幸好最终看到一个 Pdf ...

  2. C# Json数据转DataTable并生成PDF在线下载--iTextSharp生成PDF实例(文件下载,json数据转换,PDF排版一步到位)

    前言 本文将重点介绍iTextSharp的使用方法和易踩的一些坑,顺便介绍了json转DataTable的简单快捷高效的方法及二进制流转换文件在线即时下载的方法.经测试生成40页的pdf仅需要1秒,大 ...

  3. C#使用itextsharp生成PDF文件

    前言 前段时间公司需要实现一个PDF文件下载功能,涉及到页眉页脚,段落,图片的生成.遂使用itextsharp来实现这一功能,但是itextsharp功能强大,类库繁多,特别是5.0版本后关于页眉页脚 ...

  4. iTextSharp生成pdf含模板(一)---制作pdf模板

    参考地址:https://www.cnblogs.com/ibeisha/p/itextsharp-pdf.html 一.使用场景:在线填写一些信息,根据对应的信息生成奖状. 二.解决方案 1.新建w ...

  5. c# 使用 itextsharp 实现生成Pdf报表

    由于项目需要,所以学习Itextsharp   此项目需求是   某一角色提交申请,然后从后台查出数据生成pdf报表 打印出来用于查看 以下是代码: string sql = "select ...

  6. iTextSharp,将多张图片合并生成PDF文件

    首先添加NuGet引用 /// <summary>/// 根据图片生成PDF/// </summary>/// <param name="sender" ...

  7. Itextsharp下根据Echarts图像生成pdf

    本文介绍如何在C#中使用ItextSharp生成带echarts图表的pdf 一.生成一个简单的pdf 后台代码 publicActionResultGetPdf(){MemoryStream ms= ...

  8. .net core生成PDF文件,iTextSharp使用

    今天介绍一个可以生成PDF的类库 iTextSharp,首先可以在Nuget包管理器中找到. 然后在命名空间引用下. using iTextSharp.text; using iTextSharp.t ...

  9. C#/.Net 不要再使用Aspose和iTextSharp啦!QuestPDF操作生成PDF更快更高效!

    QuestPDF QuestPDF是一个开源的工具库,可以在.NET或者.Net Core中生成pdf文档 它提供了一个布局引擎,设计时考虑到了完整的分页支持以及灵活性要求!比市面上常见的Aspose ...

最新文章

  1. 理解 Word2Vec 之 Skip-Gram 模型
  2. 《细胞》:打破百年生物学法则,记忆可以遗传给下一代,甚至可能跨越多代...
  3. Lyft开源L5自动驾驶数据集:55000个人工标注的3D注释框架,还有高清空间语义地图...
  4. android 扫描音乐,native.js扫描android手机本地音乐
  5. 基础知识《十》unchecked异常和checked异常
  6. CentOS 6.6 Oracle 安装
  7. HP ILO2和JRE6(java runtime environment)
  8. 如何打包部署 Spring Boot 项⽬
  9. 关于java中 get提交方式的乱码问题。
  10. PopupWindow 常用方法学习笔记
  11. 宏杉科技摆“擂台”,遍寻天下存储技术高手
  12. JAVA输入输出流实现文件复制
  13. 幕布(思维导图)官方版 v1.1.15
  14. Zookeeper之数据同步原理
  15. PyQt5_pyqtgraph股票MACD指标
  16. uniapp中如何使用微信SDK
  17. 我知道你在淘宝买过很多东西,但是你买过一所大学吗
  18. 已知两点,求两点与原点连线的角度
  19. [548]OpenCV之cv2函数
  20. Java代码小demon(一)SpringBoot+二维码和条形码生成

热门文章

  1. (软件工程复习核心重点)第四章总体设计-第二节:设计原理
  2. Linux系统编程32:进程信号之详解信号集操作函数(sigset_t ,sigpending,sigprocmask)
  3. LeetCode 215 数组中的第K个最大元素
  4. 1381. 设计一个支持增量操作的栈
  5. Shell生成随机mac地址
  6. Docker 的4种网络模式
  7. QT5基础操作(一)
  8. Linux下查看串口信息
  9. nodejs redis数据类型命令汇总
  10. 我是这样理解HTTP和HTTPS区别的