原文 [ASP.NET]以iTextSharp手繪表格並產生PDF下載
大家使用iTextSharp的機緣都不太一樣, 由於單位Crystal Report的License數量有限主管要我去找一個免費產生PDF方法, 避免Crystal Report的License使用過多, 於是乎就找上了iTextSharp.
Crystal Report 與 iTextSharp比較表
| |
Crystal Report |
iTextSharp |
| 視覺化界面 |
YES |
NO |
| 轉換成PDF |
YES |
YES |
| 費用 |
YES |
NO |
第一次總是特別辛苦的, 為了畫出一張收據, 沒有視覺化界面的幫忙, 透過大腦的想像, 終於完成了任務, 但是對於使用Crystal Report的老手們, 應該相當不習慣, 因為看不見畫的東西, 對他們是不方便的, 但可以省錢, 我想老闆不會說不, 最後我把我學習的成果做成一個範例.
請記得先去網站下載iTextSharp.dll這個檔案加入參考
02 |
using System.Collections.Generic; |
06 |
using System.Web.UI.WebControls; |
08 |
using iTextSharp.text; |
09 |
using iTextSharp.text.pdf; |
11 |
public partial class _Default : System.Web.UI.Page |
13 |
protected void Page_Load(object sender, EventArgs e) |
16 |
Document Doc= new Document(); |
18 |
MemoryStream Memory= new MemoryStream(); |
20 |
PdfWriter PdfWriter = PdfWriter.GetInstance(Doc, Memory); |
23 |
string FontPath = Server.MapPath("kaiu.ttf"); |
25 |
BaseFont bfChinese = BaseFont.CreateFont(FontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); |
27 |
Font ChFont = new Font(bfChinese, 9); |
32 |
//設定表格需要幾攔幾列 (如果不設列,可能會在使用RowSpan或ColSpan發生錯誤) |
33 |
iTextSharp.text.Table Tb = new iTextSharp.text.Table(4,5); |
36 |
//自動填滿欄位(如果沒有填滿欄位,不會畫出欄位的線條) |
37 |
Tb.AutoFillEmptyCells = true; |
40 |
Paragraph Title = new Paragraph("iTextSharp畫表格測試", ChFont); |
42 |
Title.SetAlignment("center"); |
45 |
iTextSharp.text.Cell Tc; |
46 |
Tc= new iTextSharp.text.Cell(new Phrase("點部落",ChFont)); |
48 |
Tc.HorizontalAlignment = Element.ALIGN_CENTER; |
49 |
//內容高度置中 (Top,Middle感覺不到有沒有移動) |
50 |
Tc.VerticalAlignment = Element.ALIGN_TOP; |
57 |
Tc = new iTextSharp.text.Cell(new Phrase("www.dotblogs.com.tw", ChFont)); |
59 |
Tc.HorizontalAlignment = Element.ALIGN_CENTER; |
60 |
//內容高度置中(Top,Middle感覺不到有沒有移動) |
61 |
Tc.VerticalAlignment = Element.ALIGN_TOP; |
86 |
Response.AddHeader("Content-Disposition", "attachment; filename=pdfExample.pdf"); |
87 |
Response.ContentType = "application/octet-stream"; |
89 |
Response.OutputStream.Write(Memory.GetBuffer(), 0, Memory.GetBuffer().Length); |
90 |
Response.OutputStream.Flush(); |
91 |
Response.OutputStream.Close(); |
- 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)
摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...
- JointBoost+CRF+GraphCut做手绘草图的分割
研究生做的稍微有点水平的就这两个项目了:一个是利用SVM做手绘草图的分类,另一个是利用JointBoost+CRF做手绘草图的分割.总结得出的经验是做研究的方法就是将别人大神的代码看懂然后改成适合自己 ...
- Android基于mAppWidget实现手绘地图(一)--简介
http://lemberg.github.io/mappwidget/user_guide.html 最近在看一些导游类应用,发现一些景区的导览图使用的完全是自定义地图,也就是手绘地图.这种小范围使 ...
- EDIUS手绘遮罩功能如何用
学了这么久的EDIUS视频编辑软件,你们学的怎么样了呢?你们知道EIDUS手绘遮罩的用法么,会熟练地使用它么?如果你们还没有学到这一知识点的话也不要着急,因为你们看完下面这篇文章就会明白了.事不宜迟, ...
- 免费下载:320+ 手绘风格 Apple iOS7 图标
Themify 图标是一套用在网页设计和应用程序的图标,包括 320+ 手工制作的像素完美的苹果 iOS7 图标中汲取灵感.这些图标完全免费,您可以用于任何目的,无论是个人或商业. 您可能感兴趣的相 ...
- IOS 手绘地图导航
手绘地图导航 第三方库 NAMapKit, 1)支持在手绘图上标记.缩放 2)支持在单张图片 3)支持瓦片小图片 思路 前提:美工已经切好手绘图,并告知我们当前的缩放级别. 1)确定好手绘图左上角点在 ...
- 基于mAppWidget实现手绘地图(十五)–如何控制放大缩小
一般来说,可以使用以下几种方式来控制地图的放大/缩小 : 使用控件底部的缩放按钮 双击控件 pinch手势 物理按键 :I键标识缩小 :O键表示放大.(只有设备具有物理按键才行) 当然, ...
- [ASP.NET]利用itextsharp将GridView汇出PDF档
原文 [ASP.NET]利用itextsharp将GridView汇出PDF档 最近在讨论区看到有人说itextsharp可以把网页变成PDF 小弟就去抓一下itextsharp来玩玩,先教大家最实用 ...
- 基于mAppWidget实现手绘地图--索引&DEMO
文章翻译完了,梳理一下,附Demo下载 基于mAppWidget实现手绘地图(一)–简介 基于mAppWidget实现手绘地图(二)–概要 基于mAppWidget实现手绘地图(三)–环境搭建 基于m ...
随机推荐
- javascripts小结
1 NAN-isNaN():判断是否数值 2 数值转换 Number()-任何数据类型,parseInt(),parseFloat()-字符串 3数组转字符串 var a=["red&quo ...
- 什么是DNS劫持和DNS污染?
什么是DNS劫持和DNS污染? http://blogread.cn/it/article/7758?f=weekly 说明 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ...
- WRTnode 的 HTTP Web 开关实验(2016-05-16)
前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web 开关灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑一个 html 文件,放在 /ww ...
- MVC框架浅析(基于PHP)
MVC框架浅析(基于PHP) MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数 ...
- 快速配置SSH证书登录
环境: 在 CentOS 5/6/7.RHEL 5/6/7 和 Oracle Linux 6/7 上测试通过 使用 ssh-key-gen 命令生成公钥和私钥 用 ssh-copy-id 命令将公钥复 ...
- jQuery 子元素选择
对于如下代码片段 如何对河meishi这个div的子DIV呢? <div id="vertical-Menu-meishi" class="J-nav-item& ...
- JS 某一区域内所有CheckBox全选和取消全选(.net)
假设在某个table中的两个td,一个放全选checkbox,一个放所有的checkbox[其他标签类似] eg: <td>人才类别:<asp:CheckBox ID= ...
- STL--stack/queue的使用方法
stack(栈)和queue(队列)也是在程序设计中经常会用到的数据容器,STL为我们提供了方便的stack(栈)的queue(队列)的实现. 准确地说,STL中的stack和queue不同于vect ...
- Linux 各类软件整理汇总
关于前端和后端的解释 详细链接见:http://wiki.ubuntu.org.cn/Qref/Apps Linux下程序通常不需要作为一个整体,而是模块化,于是有了可选的前端和后端——这种情况下:前 ...
- Cloud Foundry中warden的网络设计实现——iptable规则配置
在Cloud Foundry v2版本号中,该平台使用warden技术来实现用户应用实例执行的资源控制与隔离. 简要的介绍下warden,就是dea_ng假设须要执行用户应用实例(本文暂不考虑ward ...