zoukankan      html  css  js  c++  java
  • asp.net生成PDF文件参考 .

    TextSharp 是用来生成  PDF 的一个组件,在 1998 年夏天的时候,Bruno Lowagie ,iText 的创作者,参与了学校的一个项目,当时使用 HTML 来生成报告,但是,使用 HTML 打印的效果很不理想。最后,他发现,使用 PDF 可以完美解决打印问题,为了能够在各个系统中使用,iText 组件库诞生了。

    最初的 iText 主要是支持 Java 語言。之後針對Microsoft .NET C Sharp做了一個版本,也就是我們今天要介紹的 iTextSharp。

    目前,iTextSharp 的版本是 5.1.2,下载地址:http://sourceforge.net/projects/itextsharp/files/

    其中主要包含了核心组件:itextsharp.dll

    但是,直接使用它并不能处理中文,你还要下载两个组件。

    在下载页面中,注意图中标注的 extras 文件夹。

    点击之后,可以看到如下的下载:

    注意把标注的两个压缩包下载下来,这是使用中文的关键。解开两个压缩之后可以看到下面的两个文件。

    iTextAsianCmaps.dll

    iTextAsian.dll

    在创建的项目中,将这三个程序集都添加到项目的引用中。

    // 必须先加入资源
    BaseFont.AddToResourceSearch("iTextAsian.dll");
    BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
     
    //"UniGB-UCS2-H" "UniGB-UCS2-V"是简体中文,分别表示横向字 和 纵向字
    //"STSong-Light"是字体名称
    BaseFont bf = BaseFont.CreateFont("STSong-Light","UniGB-UCS2-H", BaseFont.EMBEDDED);
     
    // 也可以使用 TTF 字体
    BaseFont bf0 = BaseFont.CreateFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
     
    // 创建 PDF 文档
    iTextSharp.text.Document document
        =new iTextSharp.text.Document();
     
    // 创建写入器实例,PDF 文件将会保存到这里
    iTextSharp.text.pdf.PdfWriter.GetInstance(document,
            newSystem.IO.FileStream("Demo.pdf", System.IO.FileMode.Create)
        );
     
    // 打开文档
    document.Open();
     
    iTextSharp.text.Font font =new iTextSharp.text.Font(bf);
     
    //写入一个段落, Paragraph
    document.Add(newParagraph("你好, PDF !", font));
     

    document.Close();







    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 System.IO;
    usingiTextSharp;
    usingiTextSharp.text;
    usingiTextSharp.text.pdf;
     
    publicpartial class_Default : System.Web.UI.Page
    {
        staticDataTable datatable = newDataTable("testpdf");
        protectedvoid Page_Load(objectsender, EventArgs e)
        {
            if(!Page.IsPostBack)
            {
                DataRow dr;
                //建立Column例,可以指明例的类型,这里用的是默认的string
                datatable.Columns.Add(newDataColumn("编号"));
                datatable.Columns.Add(newDataColumn("用户名"));
                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);
                }
            }  
        }
        protectedvoid Button1_Click(objectsender, EventArgs e)
        {
            try
            {
                Document document =new Document();
                PdfWriter.GetInstance(document,new FileStream(Server.MapPath("Test.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,newColor(0, 0, 0));
     
                //按设置的字体输出文本
                document.Add(newParagraph(this.TextBox1.Text.ToString(), fontChinese));
                //输出图片到PDF文件
                iTextSharp.text.Image jpeg01 = iTextSharp.text.Image.GetInstance(Server.MapPath("Images/gyl.jpg"));
                document.Add(jpeg01);
                iTextSharp.text.Image jpeg02 = iTextSharp.text.Image.GetInstance(Server.MapPath("Images/yy.jpg"));
                document.Add(jpeg02);
     
                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(newPhrase(datatable.Rows[i][j].ToString(), fontChinese));
                    }
                }
                document.Add(table);
     
                document.Close();
                Response.Write("<script>alert('导出成功!');</script>");
            }
            catch(DocumentException de)
            {
                Response.Write(de.ToString());
            }
        }
    }
  • 相关阅读:
    Go中的结构实现它的的写法注意事项
    Go语言中的struct的初始化。
    python中的number类型
    python的类型
    今天起,每天记录python等语言的编程心得和体会
    destoon 下apache伪静态排除目录规则
    如何进行数据库设计?
    Spring IOC知识点
    SpringBoot框架:集成Security完成认证鉴权
    CentOS 7 本地安装kubernetes
  • 原文地址:https://www.cnblogs.com/zhycyq/p/3309474.html
Copyright © 2011-2022 走看看