用itextsharp打印pdf示例

学习了用itextsharp输出PDF文档,支持用XML定义文档,可定义多个数据源,简单的表达式,用于项目中效果还不错,其中PdfPageEvent类由包大人提供。

示例程序定义了一个简单的xml文件,如图:

输出的PDF文档,如图:

------------------------华丽的分隔线-----------------------------

定义PDF打印的Xml格式说明

参考示例:合同PDF打印,SettingItem表 /Application/Wxht/PdfSetting

PDF文档结构:

文档包含表格: Document.Add(Table)

表格包含单元格:Table.Add(Cell)

单元格内可以有文本或图片Cell.Add(Text),Cell.Add(Image) , 也可以内嵌表格Cell.Add(Table)

Xml文档结构:

<Document Margin = "10,30,10,100" >

<Document.PageEvent>

定义页眉页脚

</Document.PageEvent>

<table Font.Size="11" HeaderRows = "1" RelativeWidths="{*} - 470,90" >

<tr DataContext =”Default[*]” >  循环显示该行内容

<td Content=”{wxhth}” />  单元格内显示字段值

<td>

<table> 单元格内嵌套表格 </table>

</td>

</tr>

</table>

<Document.DataSource>    定义数据源

<DataSource Name="Default">

<![CDATA[   SQL语句   ]]>

</DataSource>

</Document.DataSource>

</Document>

节点及属性说明:

大小写敏感, 类似XAML语法


Document


大小写敏感, 是Xml的根节点


Document.Margin


页边距, 整型列表, 可以用空格或逗号(,)或坚线(|)分隔, 如

Margin =”10,30,10,100” 表示左边距为10,上边距为30,右边距10,下边距为100


Document.PageEvent


用于定义页脚, 可设置一个图片, 通常是签名


Table


也可以记作TABLE或table, 用于定义表格, 通常一个文档以一个表格排版


Table.HeaderRows


表头行数,该表跨页时, 每页会重复打印此行, 通用于用定义单据抬头部分


Table.RelativeWidths


表格分列, 以逗号分隔, 支持简单表达式, {*} 表示父Table的宽度


Tr


表格的行, 意义不大, 不会真正分行, 也可以记作tr或TR


Tr.DataContext


可用于定义数据源, 多行数据源, 循环呈现多行, 如: Default[*],


Td


表格的单元格, 也可以记作: td或TD


Td.Content


单元格文本内容, 默认有内边距, 左边齐, 垂直居中, 支持表达式


Td.ColSpan


合并3列单元格, 如果满足所属Table的总列数, 自动换行, 真正实现分行


Td.RowSpan


合并3行单元格


Td.HorizontalAlignment


水平对齐, 属性值可以是 c或Center.


Font.Name


文本字体大小, 如果未定义, 继承父节点的定义


Font.Size


文本字体大小, 如果未定义, 继承父节点的定义


Font.Style


如果未定义, 继承父节点的定义, 例如: Bold+UnderLine


Cell.Border


边框宽度, 如果未定义, 继承父节点的定义。

以左上右下顺序定义, 只能是个位数, 相领单元格同时定义边框会加粗。

1:表示左边框为1, 等同于:1000

1111:表示有边框

0000:表示无边框, 默认无边框


Cell.Padding


内边距, 整型列表, 可以用空格或逗号(,)或坚线(|)分隔。

如果未定义, 继承父节点的定义

Padding =”10,30” 表示左内边距为10,上内边距为30,右内边距0,下内边距为0


Cell.Height


单元格高度, 默认自动高度


Cell.Table


单元内显示子表, 通常用于排版分列


Cell.Image


单元格内显示图片

Image.Source 图片绝对路径, 空值不显示图片, 支持表达式

也可以是byte[]类型,format必须是Stream, 如 {mtPic:Stream}

Image.Width  图片宽度


Document.DataSource


定义数据源, 支持多个数据源


DataSource.Name


定义数据源名称, 默认第一个数据源作为 “Default” 数据源

表达式语法:


{colname}


取默认数据源的第0行colname列值, 例如: {mdka}


{tablename.colname:format}


取指定数据源的第0行colname列值, 以fomat格式显示, 列如:

{Default.wxdj:#,##0.00#}   以2位或3位小数显示单价

{qyrq:yyyy/MM/dd}   日期以yyyy/MM/dd格式显示


=expression


计算表达式, 以等号开始, 例如:

Cell.Content=”= 1 + 2”  显示 3

Cell.Content=”=’a’+’b’ “  单引号会自动替换成双引号, 显示 ab

Cell.Content=”=DateTime.Parse(‘{qyrq:yyyy-MM-dd}‘).ToString(‘yyyy/MM/dd‘)”

日期值转成yyyy-MM-dd格式字符串,

分析字符串, 转换成日期值

最后以 yyyy/MM/dd 格式字符串显示

Image.Source=”=State==’批准’?’c:\pic.jpg’:string.Empty”  批准时显示图片

Image Source="{colPic:Stream}"              显示二进制类型字段的图片


{=expression}


通过Table计算表达式, 通常用于统计, 例如:

Cell.Content=” {=sum(amt):0.00}”   合计金额

Cell.Content="=‘$‘+{=sum(amt):0.##}"  合计金额


tablename[*]


定义行的数据上下文, 例如:

Tr.DataContext=”Default[*]”  以默认数据源行重复显示

Tr.DataContext=”Table2[0]”   以Tabe2, 取第0行作为数据源

Tr.DataContext=”Table2[*]”   以Table2 作为数据源, 自动重复显示

此程序原用于测试,现上传到CSDN

时间: 2024-08-05 18:02:16

用itextsharp打印pdf示例的相关文章

ITextSharp导出PDF表格和图片(C#)

文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3gxw 一.流程                                                                                                                                  二.简单实例: 1)创建表

用Java代码打印PDF

1.工具类库 类库名:Apache PDFBox 软件首页:https://pdfbox.apache.org 说明:此类库由Apache软件基金会提供,使用Apache License 2.0,开源免费. 2.使用此类库打印pdf文件的代码示例 package com.why.test.pdf; import org.apache.pdfbox.PrintPDF; public class PrintPFDWithJava {     public static void main(Strin

C#使用ITextSharp操作pdf

在.NET中没有很好操作pdf的类库,如果你需要对pdf进行编辑,加密,模板打印等等都可以选择使用ITextSharp来实现. 第一步:可以点击这里下载,新版本的插件升级和之前对比主要做了这几项重大改变 1.初始化对汉字的支持 2.对页眉页脚的加载形式 第二步:制作pdf模板 可以下载Adobe Acrobat DC等任意一款pdf编辑工具,视图--工具--准备表单,可以在需要赋值的地方放上一个文本框,可以把名称修改为有意义的名称,后面在赋值时要用到. 第三步:建项目引入各个操作类 介于前段时间

基于iTextSharp的PDF文档操作

公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地.其中需要物流公司提供一个运单号,来追踪货物到达哪里?! 最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用对方提供的API,简单说,就是我们传一些发货地址和客户信息,要发的货物等,对方返回一个运单号和物流面单(就是我们淘宝快递上的面单).过程呢,还是比较顺利的,经过一系列沟通,最终还是实现了功能 下面还是说说没有实现的功能,如果都实现了,也不用写这篇博客了.不足之处在于DHL提供的面单,没有提供要拣哪些

利用itextsharp导出pdf

在项目中,客户要求把一些表格导出pdf格式,在网上找了好久终于发现一个完美的解决方案,利用itextsharp可以很方便的导出pdf文件,不说太多了,直接上图,有图有真相 首先是页面图片 然后是导出的pdf图片 导出pdf代码如下: //导出Mold pdf文档 public void exportpdf_Mold(string quotenum, string fullpath) { string pdfName = quotenum + ".pdf"; string savePat

Print2Flash在线浏览打印pdf文件

原理:把 pdf 文件转换成 Flash 文件,再显示这个 Flash. 1 .安装print2flashsetup64.exe2.停止Print2Flash3服务(如果配置了服务并启动了的话)3.拷贝p2fServer.exe.Print2Flash.exe到安装目标文件夹替换原文件4.拷贝Print2FlashPrinter3_2.dll到以下文件夹替换原始文件: C:\Windows\System32\spool\drivers\x64\ 以及 C:\Windows\System32\sp

Winform 打印PDF顺序混乱,获取打印队列

原文:Winform 打印PDF顺序混乱,获取打印队列 工作中PDF打印顺序混乱着实让我疼痛了好久,其实决绝方法非常简单,但没有想到这个点子的时候确实让我走了很多弯路 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找 开始正文 既然要解决打印顺序混乱,那么必须先要实现打印PDF功能,实现PDF打印的方法很多,网上随便一搜就可以找到,这里我贴上自己的打印方法,其实也是网上找到的,稍稍做了修改 Process proc = new Process()

javaWeb项目springMVC框架下利用ITextpdf 工具打印PDF文件的方法(打印表单、插入图片)

方法一:打印PDF表单以及在PDF中加入图片 需要的资料: jar包:iTextAsian.jar ,itext-2.1.7.jar: 源码: 1 public static void main(String args[]) throws IOException, DocumentException { 2 String fileName = "D:/testPDF.pdf"; // pdf模板 3 InputStream input = new FileInputStream(new

iTextSharp给PDF添加水印

iTextSharp作为.net平台下操作PDF的组件功能强大,但是前端时间遇到了一个问题,动态生成PDF时(生成的PDF里面有多个表格,表格数据来自数据库),无法给每页都添加水印图片,可能是本人对iTextSharp组件不够了解,没有找到生成动态PDF时就给每页添加水印.最后只好先用iTextSharp生成PDF然后在用iTextSharp给生成好的PDF添加水印.如果园子里的朋友谁做过生成PDF时就给每页添加水印,可指点指点小弟. 下面把iTextSharp给PDF添加水印的代码贴出来供大家