原文 [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這個檔案加入參考 
01 using System;
02 using System.Collections.Generic;
03 using System.Linq;
04 using System.Web;
05 using System.Web.UI;
06 using System.Web.UI.WebControls;
07 using System.IO;
08 using iTextSharp.text;
09 using iTextSharp.text.pdf;
10  
11 public partial class _Default : System.Web.UI.Page
12 {
13     protected void Page_Load(object sender, EventArgs e)
14     {
15         //文件初始化
16         Document Doc= new Document();
17  
18         MemoryStream Memory= new MemoryStream();
19  
20         PdfWriter PdfWriter = PdfWriter.GetInstance(Doc, Memory);
21  
22         //字型設定
23         string FontPath = Server.MapPath("kaiu.ttf");
24  
25         BaseFont bfChinese = BaseFont.CreateFont(FontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
26  
27         Font ChFont = new Font(bfChinese, 9);
28  
29         //文件開啟
30         Doc.Open();
31  
32         //設定表格需要幾攔幾列 (如果不設列,可能會在使用RowSpan或ColSpan發生錯誤)
33         iTextSharp.text.Table Tb = new iTextSharp.text.Table(4,5);
34         //設定表格的Padding
35         Tb.Padding = 4;
36         //自動填滿欄位(如果沒有填滿欄位,不會畫出欄位的線條)      
37         Tb.AutoFillEmptyCells = true;
38  
39         //抬頭
40         Paragraph Title = new Paragraph("iTextSharp畫表格測試", ChFont);
41         //內容水平置中
42         Title.SetAlignment("center");
43  
44         //Cell內容
45         iTextSharp.text.Cell Tc;
46         Tc= new iTextSharp.text.Cell(new Phrase("點部落",ChFont));
47         //內容水平置中
48         Tc.HorizontalAlignment = Element.ALIGN_CENTER;
49         //內容高度置中 (Top,Middle感覺不到有沒有移動)
50         Tc.VerticalAlignment = Element.ALIGN_TOP;
51         Tc.Rowspan = 2;
52         Tc.Colspan = 2;
53          
54         //將Cell加入表格
55         Tb.AddCell(Tc);
56  
57         Tc = new iTextSharp.text.Cell(new Phrase("www.dotblogs.com.tw", ChFont));
58         //內容水平置中
59         Tc.HorizontalAlignment = Element.ALIGN_CENTER;
60         //內容高度置中(Top,Middle感覺不到有沒有移動)
61         Tc.VerticalAlignment = Element.ALIGN_TOP;
62         Tc.Rowspan = 2;
63         Tc.Colspan = 2;
64  
65         Tb.AddCell(Tc);
66        
67         //加入抬頭
68         Doc.Add(Title);
69         //把表格加入文件
70         Doc.Add(Tb);
71  
72         //開啟新的一頁
73         Doc.NewPage();
74  
75         //加入抬頭
76         Doc.Add(Title);
77         //把表格加入文件
78         Doc.Add(Tb);
79  
80         //文件關閉
81         Doc.Close();
82  
83  
84         //檔案下載
85         Response.Clear();
86         Response.AddHeader("Content-Disposition""attachment; filename=pdfExample.pdf");
87         Response.ContentType = "application/octet-stream";
88  
89         Response.OutputStream.Write(Memory.GetBuffer(), 0, Memory.GetBuffer().Length);
90         Response.OutputStream.Flush();
91         Response.OutputStream.Close();
92         Response.Flush();
93         Response.End();
94  
95     }
96 }

[ASP.NET]以iTextSharp手绘表格并产生PDF下载的更多相关文章

  1. 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)

    摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...

  2. JointBoost+CRF+GraphCut做手绘草图的分割

    研究生做的稍微有点水平的就这两个项目了:一个是利用SVM做手绘草图的分类,另一个是利用JointBoost+CRF做手绘草图的分割.总结得出的经验是做研究的方法就是将别人大神的代码看懂然后改成适合自己 ...

  3. Android基于mAppWidget实现手绘地图(一)--简介

    http://lemberg.github.io/mappwidget/user_guide.html 最近在看一些导游类应用,发现一些景区的导览图使用的完全是自定义地图,也就是手绘地图.这种小范围使 ...

  4. EDIUS手绘遮罩功能如何用

    学了这么久的EDIUS视频编辑软件,你们学的怎么样了呢?你们知道EIDUS手绘遮罩的用法么,会熟练地使用它么?如果你们还没有学到这一知识点的话也不要着急,因为你们看完下面这篇文章就会明白了.事不宜迟, ...

  5. 免费下载:320+ 手绘风格 Apple iOS7 图标

    Themify 图标是一套用在网页设计和应用程序的图标,包括 320+ 手工制作的像素完美的苹果  iOS7 图标中汲取灵感.这些图标完全免费,您可以用于任何目的,无论是个人或商业. 您可能感兴趣的相 ...

  6. IOS 手绘地图导航

    手绘地图导航 第三方库 NAMapKit, 1)支持在手绘图上标记.缩放 2)支持在单张图片 3)支持瓦片小图片 思路 前提:美工已经切好手绘图,并告知我们当前的缩放级别. 1)确定好手绘图左上角点在 ...

  7. 基于mAppWidget实现手绘地图(十五)–如何控制放大缩小

    一般来说,可以使用以下几种方式来控制地图的放大/缩小 : 使用控件底部的缩放按钮 双击控件 pinch手势 物理按键 :I键标识缩小 :O键表示放大.(只有设备具有物理按键才行)        当然, ...

  8. [ASP.NET]利用itextsharp将GridView汇出PDF档

    原文 [ASP.NET]利用itextsharp将GridView汇出PDF档 最近在讨论区看到有人说itextsharp可以把网页变成PDF 小弟就去抓一下itextsharp来玩玩,先教大家最实用 ...

  9. 基于mAppWidget实现手绘地图--索引&DEMO

    文章翻译完了,梳理一下,附Demo下载 基于mAppWidget实现手绘地图(一)–简介 基于mAppWidget实现手绘地图(二)–概要 基于mAppWidget实现手绘地图(三)–环境搭建 基于m ...

随机推荐

  1. TreeView控件绑定数据库

    1.在设计视图里面的代码 <form id="form1" runat="server"> <div> <h1>两个表< ...

  2. C#面向对象编程基础-喜课堂笔记

    **************[5][C#面向对象编程基础]第1讲:类与对象****************                 *************2.1.1_类与对象的概念**** ...

  3. [C#]窗体切换--避免开启多个线程

    先说说这个多窗体的界面的解决的办法: 用到的方法很简单,就是程序运行就建立一个MainForm,在这个MainForm中设立一个Panel,同时设立几个按钮,按下每个按钮都在这个Panel中载入不同的 ...

  4. WCF跟踪分析 使用(SvcTraceViewer)

    1.首先在WCF服务端配置文件中配置两处,用于记录WCF调用记录! A:<system.serviceModel>目录下: <diagnostics>      <mes ...

  5. django开发简易博客(三)

    一.静态文件的使用 首先,新建static目录,目录下分别建立css.js.img三个子目录 修改settings.py文件 STATICFILES_DIRS = ( 'F:/web/static', ...

  6. ThinkPHP第五天(提交类型判定常量IS_POST等,错误页面种类,Model实例化方式,模板中使用函数,foreach循环,模板中.语法配置)

    1.IS_GET.IS_POST.IS_PUT.IS_DELETE.IS_AJAX常量,方便快捷实现各个判断. 在Action类中还可以使用$this->isPost()等进行判断. 2.错误页 ...

  7. 【转载】CentsOS系统inotify实时监控服务器文件(夹)定制事件处理程序

    原始博文和参考博文 1.CentsOS系统inotify实时监控服务器文件 2.Linux中让进程在后台运行的方法 3.linux inotify 监控文件系统事件 非常好 方法一 说明: 服务器系统 ...

  8. APACHE的伪静态设置

    1.配置httpd.conf #LoadModule rewrite_module modules/mod_rewrite.so 开启 LoadModule rewrite_module module ...

  9. POJ3318【随机化算法挺有意思】

    题目链接:http://poj.org/problem?id=3318 http://meizhe143.blog.163.com/blog/static/3893836200710299512136 ...

  10. JavaScript螺纹的问题和答案

    要求: JavaScript是单线程的,有任务队列.比方使用setTimeou(func,secs)来在secs毫秒后向任务队列加入func.可是,setTimeout后面跟一个死循环,那么死循环导致 ...