学习了用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

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

  1. C#使用iTextSharp+ZXing.Net+FreeSpire.PDF生成和打印pdf文档

    项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.Net+FreeSpire.PDF三个类库实现了生成pdf.生成条形码和打印pdf功能. 首先在项 ...

  2. 基于iTextSharp的PDF操作(PDF打印,PDF下载)

    基于iTextSharp的PDF操作(PDF打印,PDF下载) 准备 1. iTextSharp的简介 iTextSharp是一个移植于java平台的iText项目,被封装成c#的组件来用于C#生成P ...

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

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

  4. itextsharp生成pdf后的直接打印问题

    原文 itextsharp生成pdf后的直接打印问题 小弟这两天用itextsharp生成pdf文档,生成的pdf可以直接保存在指定路径的文件夹下,可是user不想保存,想要点一下button,就可以 ...

  5. 基于iTextSharp的PDF文档操作

    公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地.其中需要物流公司提供一个运单号,来追踪货物到达哪里?! 最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用 ...

  6. C# 打印PDF文档的10种方法

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...

  7. C#使用ITextSharp操作pdf

    在.NET中没有很好操作pdf的类库,如果你需要对pdf进行编辑,加密,模板打印等等都可以选择使用ITextSharp来实现. 第一步:可以点击这里下载,新版本的插件升级和之前对比主要做了这几项重大改 ...

  8. 使用iTextSharp修改PDF文件(一)

    这个iTextSharp确实是个好东西,可以创建.读取PDF格式的文档,虽然我的需求比较简单,但我首先还是基本上.完整地看完了它的相关文档,不喜欢英文的同志,可以搜索一篇<用C#制作PDF文件全 ...

  9. .NET的那些事儿(9)——C# 2.0 中用iTextSharp制作PDF(基础篇) .

    该文主要介绍如何借助iTextSharp在C# 2.0中制作PDF文件,本文的架构大致按照iTextSharp的操作文档进行翻译,如果需要查看原文,请点击一下链接:http://itextsharp. ...

随机推荐

  1. webstorm基础使用总结

    webstorm基础使用总结(不仅仅是一堆快捷方式) 注:原文链接: 水车 :  本次写的内容是我想到那个就写那个,都是本人平时写代码的时候的一些习惯,未必是最好的,贵在交流! 1:  shift+e ...

  2. 书柜的尺寸(bzoj 1933)

    Description Tom不喜欢那种一字长龙式的大书架,他只想要一个小书柜来存放他的系列工具书.Tom打算把书柜放在桌子的后面,这样需要查书的时候就可以不用起身离开了.显然,这种书柜不能太大,To ...

  3. PHPCMS v9 安全防范教程

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  4. retrofit使用随记

    1.请求接口 public interface RetrofitApi { /*注册*/ /*登录*/ @FormUrlEncoded //post请求带这个 @POST("url" ...

  5. linux学习日记之目录配制

    linux目录管理遵循FHS标准,主要目标是希望让使用者可以了解已安装软件通常放置于哪个目录上,所以他们希望独立的软件开发商.操作系统制作者.以及想要维护系统的用户,都遵循FHS的标准.也就是说FHS ...

  6. 复制远程共享文件夹内容到本地(python脚本实例)

    本人自用脚本(python): #-*- coding:utf-8 -*- import sys , os , re def copyFileDir(srcFilename , desFilename ...

  7. ubuntu_tftp服务搭建

    搭建过程: 1. sudo apt-get install tftpd-hpa tftp-hpa是客户端 tftpd-hpa是服务器端 2.建立目录 执行:mkdir /home/wmx/Deskto ...

  8. KeyedPriorityQueue

    // <copyright file="KeyedPriorityQueue.cs" company="Microsoft">Copyright ( ...

  9. Swift 基本常量和变量,基本数据类型

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #4dbf56 } p.p2 { margin: 0.0px 0. ...

  10. axure的一些注意事项

    1. 不要轻易用中继器的 载入时 事件, 感觉存在bug 2. 元件在显示和隐藏的动画过程中,不要去取他的x,y值,有几率会取成0,也不要去获取它的尺寸,只有在动画完成后才能获得 3. 装着一个中继器 ...