当前位置: 首页 > 编程日记 > 正文

asp.net2.0导出pdf文件完美解决方案【月儿原创】

asp.net2.0导出pdf文件完美解决方案

作者:清清月儿

主页:http://blog.csdn.net/21aspnet/           时间:2007.5.28

PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件开始使用PDF格式文件。PDF格式文件目前已成为数字化信息事实上的一个工业标准。

Adobe公司设计PDF文件格式的目的是为了支持跨平台上的,多媒体集成的信息出版和发布,尤其是提供对网络信息发布的支持。为了达到此目的, PDF具有许多其他电子文档格式无法相比的优点。PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。

日常工作中经常遇到想把报表和网页导出到PDF的需求。本文提供完美的解决方案

ASP.NET导出到PDF最终效果图(其实winform和控制台程序都一样可以做)。

本文实现 文字图片数据表的导出
 核心技术方案:使用itextsharp.dll

1.下载itextsharp.dll和ICSharpCode.SharpZipLib.dll
http://sourceforge.net/project/showfiles.php?group_id=72954

iTextSharp.tutorial.01.zip    示例文件 提供了各种解决方案本文由于时间问题仅做抛砖引玉,希望大家自己研究其他需求

itextsharp.dll  itextsharp-4.0.3-dll.zip

ICSharpCode.SharpZipLib.dll    http://download.csdn.net/down/135897  ICSharpCode.SharpZipLib.dll   

SharpZipLib.dll类库中的内容实现的压缩与解压功能,它是开源

2.引用itextsharp.dll和ICSharpCode.SharpZipLib.dll

3.后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
public partial class _Default : System.Web.UI.Page 
{
    
static DataTable datatable = new DataTable("testpdf");
    
protected void Page_Load(object sender, EventArgs e)
    
{
         
//判断是否是回发页面http://blog.csdn.net/21aspnet
        if (!Page.IsPostBack)
        
{
         DataRow dr;
        
//建立Column例,可以指明例的类型,这里用的是默认的string
        datatable.Columns.Add(new DataColumn("编号"));
        datatable.Columns.Add(
new DataColumn("用户名"));
        
for (int i = 1; i < 5; i++)
        
{
            dr 
= datatable.NewRow();
            dr[
0= System.Convert.ToString(i);
            dr[
1= "清清月儿" + System.Convert.ToString(i);
            datatable.Rows.Add(dr);
        }

        }

        
        
    }

    
protected void Button1_Click(object sender, EventArgs e)
    
{
       

        
try
        
{
            Document document 
= new Document();
            PdfWriter.getInstance(document, 
new FileStream(Server.MapPath("Chap0101.pdf"), FileMode.Create));
                        document.Open();
            BaseFont bfChinese 
= BaseFont.createFont("C://WINDOWS//Fonts//simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font fontChinese 
= new Font(bfChinese, 12, Font.NORMAL,new Color(0, 0, 0));

                        document.Add(
new Paragraph(this.TextBox1.Text.ToString(), fontChinese));

            iTextSharp.text.Image jpeg 
= iTextSharp.text.Image.getInstance(Server.MapPath("pic015.jpg"));
            document.Add(jpeg);
            PdfPTable table 
= new PdfPTable(datatable.Columns.Count);

            
for (int i = 0; i < datatable.Rows.Count; i++)
            
{
                
for (int j = 0; j < datatable.Columns.Count; j++)
                
{
                    table.addCell(
new Phrase(datatable.Rows[i][j].ToString(), fontChinese));
                }

            }

            document.Add(table);

            document.Close();
        }

        
catch (DocumentException de)
        
{;
            Response.Write(de.ToString());
        }

    }

}

4.前台代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>清清月儿 制作导出PDF http://blog.csdn.net/21aspnet</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="导出" /></div>
    
</form>
</body>
</html>

5.前台操作:

 6.属性说明:

itextsharp-4.0.3-dll.zip   示例文件包含几乎所有的PDF处理需求

颜色:
 Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,new Color(0, 0, 0)); //黑Font fontChinese = new Font(bfChinese, 12, Font.NORMAL,new Color(0, 255, 0)); //绿

注释
 
iText支持不同风格的注释。

u 文本注释:

你可以添加一小段文本到你的文档中,但它并非文档内容的一部分,注释有标题和内容:

Annotation a = new Annotation(

"authors",

"Maybe it's because I wanted to be an author myself that I wrote iText.");

对齐方式:
cell.HorizontalAlignment = Element.ALIGN_CENTER;

cell.VerticalAlignment = Element.ALIGN_MIDDLE;

下划线/删除线:
Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));

Chunk chunk2 = new Chunk("This font is of type ITALIC | STRIKETHRU", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.ITALIC | Font.STRIKETHRU));

加密:
public void setEncryption(boolean strength, String userPassword, String ownerPassword, int permissions);

由于时间问题:更多如页眉页脚属性目录水印单元格间距边框等等请大家自己研究文档。

想得到想不到示例文件都有。

相关文章:

MYSQL 部分事务

MYSQL 中通过 savepoint 的方式来实现只提交事务的一部分。 step 1 : savepoint savepoint_name;、 做标记 step 2 :rollbak to savepoint savepoint_name;回滚到标记点 setp 3 :release savepoint savepoint_name;解除标记 -------------------------------------------------…

二维已经 OUT 了?3DPose 实现三维人体姿态识别真香 | 代码干货

作者|李秋键出品|AI科技大本营(ID:rgznai100)引言人体姿态估计是计算机视觉领域很多研究工作的基础&#xff0c;也是研究的热点问题&#xff0c;在行为识别、人机交互、姿态跟踪等领域有着广泛的应用前景。按照人体姿态维度的差异&#xff0c;可以将人体姿态估计任务分为二维人…

python学习------tab补全

python学习------tab补全 python也可以进行tab键补全 123456789101112131415161718#!/usr/bin/env python# -*- coding: utf-8 -*-# python startup fileimport sys import readline import rlcompleter import atexit import os # tab completionreadline.parse_and_bind(tab:…

asp.net的Ajax学习进阶

asp.net的Ajax学习进阶 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.6.3 1.什么是Ajax? 2006年忽如一夜春风来&#xff0c;众多涉及到Web开发的站点都在谈Ajax&#xff0c;那么到底什么是Ajax呢&#xff1f…

Windows下FFmpeg高速入门

本系列文章导航 Windows下FFmpeg高速入门 ffmpeg參数解释 mencoder和ffmpeg參数具体解释&#xff08;Java处理视频&#xff09; Java 生成视频缩略图(ffmpeg) 使用ffmpeg进行视频文件转换成FLV整理 java 视频处理 mencoder java 视频处理 ffmpedmencoder Windows下FFmpeg高速入…

“香山”处理器产生背后的逻辑

作者 | 老石谈芯的老石来源 | 老石谈芯在最近召开的RISC-V中国峰会上&#xff0c;中科院计算所的包云岗研究员团队正式发布了名为“香山”的开源高性能RISC-V处理器。前不久我有幸和包老师就这个事情做了一次深度的交流&#xff0c;我们聊了关于RISC-V、还有“香山”处理器的前…

第79天:jQuery事件总结(二)

上一篇讲到jQuery中的事件&#xff0c;深入学习了加载DOM和事件绑定的相关知识&#xff0c;这篇主要深入讨论jQuery事件中的合成事件、事件冒泡和事件移除等内容。 一、合成事件 jQuery有两个合成事件——hover()方法和toggle()方法&#xff0c;同ready()方法一样&#xff0c;这…

asp.net利用RAR实现文件压缩解压缩【月儿原创】

asp.net利用RAR实现文件压缩解压缩 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.6.13 如果服务器上安装了RAR程序&#xff0c;那么asp.net可以调用RAR实现文件压缩与解压缩。 不过要注意的是&#xff0c;由…

缺少HTML Doctype造成的样式问题

很简单的一个登陆界面: 代码&#xff1a; <html> <head><style type"text/css">form span {display: block;font-size: 1em;color: #787878;padding-bottom: 5px;font-weight: 600;font-family: Open Sans, sans-serif; }body{background-color: #…

快收藏!整理了 100 个 Python 小技巧

作者&#xff1a;小F来源&#xff1a; 法纳斯特目前Python可以说是非常流行&#xff0c;在目前的编程语言中&#xff0c;Python的抽象程度是最高的&#xff0c;是最接近自然语言的&#xff0c;很容易上手。你可以用它来完成很多任务&#xff0c;比如数据科学、机器学习、Web开发…

--single-transaction 参数对应MyISAM引擎和InnoDB引擎

结论&#xff1a;使用--single-transaction 备份含有MyISAM的表不会获得一致性备份&#xff0c;所有的innodb表可以获得事务开始时的一致性快照&#xff0c;但是MyISAM表获取的是备份该表时的最新快照&#xff0c; 测试库&#xff1a;test&#xff0c;包含表t1,t2,t3,t4,t5,t6 …

C#优化字符串操作【月儿原创】

C#优化字符串操作 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.6.17 开发中可以说几乎随时会涉及到字符串处理&#xff0c;本人觉得很有必要把平时遇到的问题和大家一起讨论&#xff0c;如果大家有好的见解和…

构筑超异构计算时代,英特尔 AI 全布局

作者 | 伍杏玲出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;我们正值数据井喷时代&#xff0c;据 IDC 发布《数据时代 2025》报告显示&#xff0c;全球每年产生的数据将从 2018 年的 33ZB 增长到 2025 年的 175ZB。其中大部分为非结构化数据&#xff0c;对数据实时…

[软件推荐]电子日记本EDiary,记下您 的每一天

推荐一款电子日记本EDiary&#xff0c;可以记下每天的工作与生活&#xff0c;可支持附件上传&#xff0c;使用方便简单&#xff0c;我从08年开始使用至今&#xff0c;感觉非常不错&#xff0c;也介绍给同事朋友使用&#xff0c;现给大家分享一下。可以到这里下载&#xff1a;ht…

C#的6种常用集合类大比拼【月儿原创】

C#的6种常用集合类大比拼 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.6.27 说明&#xff1a;MSDN没有说出几种集合类其间的区别&#xff0c;当然欲知更多细节可参考MSDN。 一.先来说说数组的不足&#xf…

“35岁才是一个程序员成熟的开始!”

作者 | 王晓波&#xff0c;同程旅行机票事业群CTO【写在前面】不知道从什么时候开始&#xff0c;身边的“小朋友”们都开始为一件事感到焦虑&#xff0c;那就是&#xff1a;“到了35岁我还能找到一份编程的工作吗&#xff1f;”。坦白讲&#xff0c;我年轻的时候也有过迷茫的时…

centos安装easy_instal

easy_install与yum类似&#xff0c;使用easy_install&#xff0c;可以轻松在pypi软件库里面搜索python各类软件安装easy_install比较简单&#xff0c;如果配置好yum&#xff0c;就可以直接搜索python-setuptoolsyum –y install python-setuptools安装完python-setuptools之后&…

如何用xmanager远程连接centos6.0的桌面

在centos6.0系统上设置 修改custom.conf文件 vim /etc/gdm/custom.conf 在[security]下面添加 AllowRemoteRoottrue 在[xdmcp]下面添加 Port177 Enable1 修改完后效果如下&#xff1a; [daemon] [security] AllowRemoteRoottrue [xdmcp] Port177 Enable1 [greeter] [chooser] […

ASP.NET 3.5 企业级开发

议题 .NET Framework 3.5 和Visual Studio 2008 C# 面向对象程序设计 ASP.NET 状态管理和页面传值 ASP.NET 中的错误处理 ADO.NET与数据访问 架构与模式 安全与性能 优秀的团队开发管理功能C# 面向对象程序设计封装继承性多态性抽象类接口装箱和拆箱泛型ASP.NET 状态管理…

DEV报表之条形码

今天无意间发现DEV的报表居然自带条形码生成控件&#xff0c;正好要用到&#xff0c;省的自己手动生成图片了。前提&#xff1a;一张做好的报表Dev报表基础教程首先拖出XRBarCode控件&#xff0c;放到表头的空白位置&#xff0c;摆好高度宽度。选择Symbology&#xff0c;设置你…

Copilot 真会砸了程序员的饭碗?

作者 | 马超 责编 | 孙胜出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;最近OpenAI与GitHub联合构建的AI自动编程工具Copilot正式登场&#xff01;Copilot基于自然语言处理模型GPT-3搭建而成&#xff0c;可在程序员编写代码时提供建议&#xff0c;甚至直接补…

提升城镇化质量 有利于激活智慧城市潜能

国家发展改革委副主任胡祖才指出&#xff0c;智慧城市建设是中国新型城镇化的重要内容&#xff0c;也是推进我国新型城镇化建设的一项长期的任务。如何通过智慧城市建设&#xff0c;促进城市发展模式向资源节约型、环境友好型转变&#xff0c;城市管理由粗放型、经济型向精专化…

变量的属性(全局变量、局部变量、动态变量、静态变量等)

变量的属性 1、变量的分类 l 根据作用域&#xff1a;可分为全局变量和局部变量。 l 根据生存周期&#xff1a;可分为静态存储方式和动态存储方式&#xff0c;具体地又分为自动的&#xff08;auto&#xff09;、静态的&#xff08;static&#xff09;、寄…

Science论文:诺奖经济学家的经典决策模型,被AI挑战

在2019年DOTA2的顶级赛事TI8的正赛完成之后&#xff0c;OpenAI的人工智能战队与TI8的冠军OG举行了一场表演赛&#xff0c;在英雄阵容限定17个&#xff0c;部分道具和功能禁用的前提下&#xff0c;OpenAI以2&#xff1a;0完胜了OG&#xff0c;尤其值得一提的是第二场比赛仅用时1…

Canny算法源码,欢迎交流

http://blog.csdn.net/jianxiong8814/article/details/1563109 http://blog.csdn.net/assuper/article/details/6937130 存在的bug 在dsp http://bbs.csdn.net/topics/390445572

Provisioning Services 7.8 入门系列教程之十三 使用 Boot Device Management(BDM)

续Provisioning Services 7.8 入门系列教程之十二 实现高可用性 可以使用 Boot Device Management 实用程序将 IP 和引导信息&#xff08;引导设备&#xff09;交付给目标设备&#xff0c;此方法可以取代传统的 DHCP、PXE 和 TFTP 方法。 如果使用此方法&#xff0c;当目标设备…

Memcached深度分析

Memcached是danga.com&#xff08;运营LiveJournal的技术团队&#xff09;开发的一套分布式内存对象缓存系统&#xff0c;用于在动态系统中减少数据库负载&#xff0c; 提升性能。关于这个东西&#xff0c;相信很多人都用过&#xff0c;本文意在通过对memcached的实现及代码分析…

【分享】 IT囧事

导读&#xff1a;企业的业务发展离不开信息化建设&#xff0c;信息系统的稳定运行更离不开IT运维的支持&#xff0c;许多生命期短暂或者使用效果不太好的IT系统&#xff0c;都是因为后期的维护和支持不到位&#xff0c;才导致前期投入的资金和人力付之东流&#xff0c;让人扼腕…

为什么掌握Linux对程序员这么重要……

人工智能、物联网、大数据时代&#xff0c;Linux正有着一统天下的趋势&#xff0c;几乎每个软件工程师岗位&#xff0c;都要求掌握Linux。可以说&#xff0c;打开 Linux 操作系统这扇门&#xff0c;你才是合格的软件工程师。如果不能熟练地操作 Linux&#xff0c;你基本上等于少…

Java并发编程有多难?这几个核心技术你掌握了吗?

本文主要内容索引 1、Java线程 2、线程模型 3、Java线程池 4、Future(各种Future) 5、Fork/Join框架 6、volatile 7、CAS&#xff08;原子操作&#xff09; 8、AQS&#xff08;并发同步框架&#xff09; 9、synchronized&#xff08;同步锁&#xff09; 10、并发队列&#xff0…