iTextSharp是一款开源的PDF操作类库,使用它可以快速的创建PDF文件。

中文参考网站:http://hardrock.cnblogs.com/

http://pdfhome.hope.com.cn/Article.aspx?CID=bf51a5b6-78a5-4fa3-9310-16e04aee8c78&AID=f5fe52dd-8419-4baa-ab1c-ea3f26952132

英文参考网站:http://itext.ugent.be/library/

·  技术文章(http://itext.ugent.be/articles/

· 在线示例 (http://itextdocs.lowagie.com/tutorial/

· 英文API(http://itext.ugent.be/library/api/

<<iText in Action 2nd>>读书笔记汇总http://www.cnblogs.com/chinafine/archive/2008/07/08/1238010.html

一.            生成pdf 的关键代码

1. 首先初始化个流和获取到的model数据

 2、利用adobe acrobat pro编辑pdf模板

如上图所示,如“案由”这类文本,编辑字段与代码的model 一致即可,在输出的时候回自动匹配数据,具体实现后面具体说明。

如案件基本情况的这种表,需要连接输入,就不能直接输出来做,此时需要用定位坐标的方式来实现。在此之前需要我们设置几个参数变量以及静态数据,方便以后的修改

2. 生成主页的pdf

图中340,咱们需要用850-340=510(因为itext与Adobe Acorbat Pro Y坐标方向相反,需要转换下,850为全页的高度)

截取字符串的问题,需要注意一下,全部长度-“请见续页”长度,加上“请见续页”这几个字才算完成。()

3. 生成续页的pdf

首先获取到续页的字符串

续页套打的原理同首页。

4、文字删除线、下划线样式等

 public void Print<TModel>(Stream output, TModel model) where TModel : PdfBaseModel
{
base.Print(output);
if (PrintBaseFont != null)
{
PStamper.AcroFields.AddSubstitutionFont(PrintBaseFont);
}
PdfPrinterUtility.FillFormByModel(PStamper, model, PrintBaseFont);
Phrase phrase = new Phrase();
phrase.Font = PrintCurrentFont;//return new Font(PrintBaseFont, 11, Font.NORMAL);
phrase.Add(new Chunk("公开11,"));//继承短句的字体
//采用fontfactory方法,结果不支持中文。只显示出来22.
phrase.Add(new Chunk("不公开22", FontFactory.GetFont(FontFactory.HELVETICA, , Font.STRIKETHRU)));
////采用字体文件来生成字体,支持中文
phrase.Add(new Chunk("不公开33", new Font(PrintBaseFont, , Font.STRIKETHRU)));
ColumnText column = new ColumnText(Canvas);
column.SetSimpleColumn(, , , , , Element.ALIGN_LEFT);
column.AddText(phrase);
column.Go();
PStamper.FormFlattening = true;
PStamper.Writer.CloseStream = false;
PStamper.Close();
}
 public static class PrintCultureInfo
{
private static readonly string FontsBaseFolder =
System.Web.HttpContext.Current.Server.MapPath("~/Fonts/"); private static readonly string ChineseBaseFontName = "simsun.ttc,1"; public const string Chinese = "zh-CN"; public static BaseFont CreateChineseFont()
{
var basefontPath = Path.Combine(FontsBaseFolder, ChineseBaseFontName);
BaseFont baseFT = BaseFont.CreateFont(basefontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
return baseFT;
} }

5、在利用模板生成当前pdf后,需要附加其他pdf文件内容

 public byte[] AppendExistPdf(byte[] currentPdfBytes, List<string> pdfPathsToAppend)
{
using (MemoryStream appendedStream = new MemoryStream())
{
var appendedDocument = new Document();
var appendedPdfWriter = PdfWriter.GetInstance(appendedDocument, appendedStream);
appendedDocument.Open();
var appendedPdfContentByte = appendedPdfWriter.DirectContentUnder;
appendedDocument.NewPage();
var reader = new PdfReader(currentPdfBytes);
for (int i = ; i <= reader.NumberOfPages; i++)
{
var page = appendedPdfWriter.GetImportedPage(reader, i);
appendedDocument.NewPage();
appendedPdfContentByte.AddTemplate(page, , );
}
foreach (var existPdfPath in pdfPathsToAppend)
{
reader = new PdfReader(existPdfPath);
for (int i = ; i <= reader.NumberOfPages; i++)
{
var page = appendedPdfWriter.GetImportedPage(reader, i);
appendedDocument.NewPage();
appendedPdfContentByte.AddTemplate(page, , );
}
}
appendedDocument.Close();
appendedPdfWriter.Close();
return appendedStream.ToArray();
}
}

二.            Adobe Acorbat Pro的使用说明。

用这个软件来编辑pdf模板

1、 测量坐标

(1)     编辑——首选项——单位和参考线——将单位设置成点,与itext单位一致

(2)     视图——隐藏和显示——光标坐标

2、 创建表单(类似于网页中的form)

(1)     工具——表单——创建表单

(2)添加域——文本域——域命名——属性(设置字体,是否多行显示,字体大小,是否自动大小),注意字体要选Helvetica(itext只支持4种字体,其他的不会显示)

(2)     添加完成后保存表单。

3、编辑pdf模板中的文本

 4、编写简单的column,规则矩形

ColumnText commentColumn = new ColumnText(getCanvas());
// commentColumn.setSimpleColumn(480, yllIndex, 515, yurIndex, 15, Element.ALIGN_LEFT);
// commentColumn.addText(commentPhrase);
// commentColumn.go();

5、复杂的column,不规则多边形

Phrase proofsPhrase = new Phrase();
proofsPhrase.setFont(getPrintCurrentFont());
proofsPhrase.add(new Chunk(showStr));
float[] left = {, , , , , , , };
float[] right = {, , , };
ColumnText column = new ColumnText(canvas);
column.setLeading(, );
column.setColumns(left, right);
column.addText(proofsPhrase);
column.go();

三、需要注意的坑

1、应用columnText时需要填写的内容不能为空字符串,否则报错

itextsharp利用模板生成pdf文件笔记的更多相关文章

  1. 根据PDF模板生成PDF文件(基于iTextSharp)

    根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 ...

  2. Java利用模板生成pdf并导出

    1.准备工作 (1)Adobe Acrobat pro软件:用来制作导出模板 (2)itext的jar包 2.开始制作pdf模板 (1)先用word做出模板界面 (2)文件另存为pdf格式文件 (3) ...

  3. 使用word模板生成pdf文件

    使用word模板生成pdf文件 源码:UserWord

  4. Android根据pdf模板生成pdf文件

    我们需要生成一些固定格式的pdf文件或者一些报表数据,那么我们可以用 iText包去做. 需要包含的jar包:iText-5.0.6.jar    iTextAsian.jar ,怎样jar包导入工程 ...

  5. NET二进制图片存储与读取的常见方法,iTextSharp添加图片生成PDF文件

    public void iTextSharpCreatPDF() { string pdfpath = System.Web.HttpContext.Current.Server.MapPath(&q ...

  6. java根据模板生成pdf

    原文链接:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支 ...

  7. Itext生成pdf文件

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

  8. 利用html模板生成Word文件(服务器端不需要安装Word)

    利用html模板生成Word文件(服务器端不需要安装Word) 由于管理的原因,不能在服务器上安装Office相关组件,所以只能采用客户端读取Html模板,后台对模板中标记的字段数据替换并返回给客户端 ...

  9. JavaWeb项目生成PDF文件添加水印图片并导出

    一.前言 首先需要在Maven中添加相应的jar包依赖,若项目没用到Maven,也可自行下载相应所需的jar包(itextpdf.jar 与 itext-asian.jar),如下图所示.点此下载 M ...

随机推荐

  1. 树和二叉树->基础知识

    树的表示方法 1 一般表示法 2 广义表表示法 3 凹入表示法 树的基本术语: 树:n(n>=0)个结点的有限集 结点:包含一个数据元素及若干指向其子树的分支 结点的度:结点拥有的子树数成为结点 ...

  2. kafka可视化工具kafka tools

    一.下载 下载地址 选择windows 傻瓜式安装,选择安装路径,直接下一步就可以了 二. 使用 点击,运行 linux开启9092(broker)端口和2181(zookeeper)然后填写后,确定 ...

  3. 获取 base64 的封装

    /** * 1. 如何实例化 const fileInput = await FileInput.init(fileInputEle, isMulFile) */ export class FileI ...

  4. es组合多个条件进行查询

    GET /test_index/_search{ "query": { "bool": { "must": { "match&qu ...

  5. SQL SERVER 基于数据库镜像的主从同步(数据库镜像实践汇总)

    SQL SERVER 基于数据库镜像的主从同步 Author:chaoqun.guo    createtime:2019-03-26 目录 SQL SERVER 基于数据库镜像的主从同步... 1 ...

  6. Ubuntu如何修改默认python版本为python3

    修改默认python版本 Ubuntu系统内置python2.7版本,默认运行python就是运行python2.7.现在很多人都是用python3作为开发语言,我们需要修改python的默认版本为p ...

  7. pycharm如何设置注释的字体颜色

    一.pycharm如何设置注释的字体颜色 1.打开pycharm编辑器,file > settings > Editor > Color Scheme > python > ...

  8. shell编程awk基础介绍

    awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理    读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行.    awk里面的换行 ...

  9. ftp工具类

    package com.ytd.zjdlbb.service.zjdlbb; import java.io.File;import java.io.FileInputStream;import jav ...

  10. rem、em 、font-size随着屏幕大小的改变而改变

    rem  的根标签是html 以html标签上设置的font-size的值为参考点 如: <div id="app"> <div id="son> ...