asp.Net生成PDFメソッド

5284 ワード

今日ブログ園を回って、PFDを生成する文章を発表した人がいて、自分も後で使う準備をしているときに便利に呼び出す準備をしています.
まずitextsharpサイトに行ってコントロールをダウンロードします(https://sourceforge.net/projects/itextsharp)
ダウンロードしたコントロールを自分のプロジェクトに参照します.主なbllファイルはitextsharpです.dllファイル
1、DataTableからPDFファイルを生成する
Itextsharpリファレンスの追加
using iTextSharp;using iTextSharp.text;using iTextSharp.text.pdf;using System.IO;
アプリケーションコード
 /// <summary>
        ///       PDF  
        /// </summary>
        /// <param name="Data">     </param>
        /// <param name="PDFFile">  PDF     </param>
        /// <param name="FontPath">      </param>
        /// <param name="FontSize">    </param>
        /// <returns>        </returns>
        public static bool ConvertDataTableToPDF(DataTable datatable, string PDFFilePath, string FontPath, float FontSize)
        {
            //          
            Document document = new Document();
            //  PDF      
            //  FileMode-Create           ,   ,     ,   。
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFFilePath, FileMode.Create));
            //        
            document.Open();
            //  PDF      
            BaseFont baseFont = BaseFont.CreateFont(
                FontPath,
                BaseFont.IDENTITY_H,
                BaseFont.NOT_EMBEDDED);
            //                 
            Font font = new Font(baseFont, FontSize);
            //           PDF    
            PdfPTable table = new PdfPTable(datatable.Columns.Count);
            //   table   
            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(), font));
                }
            }
            //               
            document.Add(table);
            //      
            document.Close();
            //     
            writer.Close();
            return true;
        }
       /// <summary>
        ///   Dataset
        /// </summary>
        /// <returns></returns>
        private DataSet GetSet()
        {
            DataSet ds = new DataSet();
            string sql = "select * from T_AjaxXML";
            string Config = ConfigurationManager.ConnectionStrings["Config"].ConnectionString;
            using (SqlConnection cnn = new SqlConnection(Config))
            {
                using (SqlCommand cmm = new SqlCommand(sql, cnn))
                {
                    SqlDataAdapter dapter = new SqlDataAdapter(cmm);
                    dapter.Fill(ds);
                }
            }

            return ds;
        }
    : ConvertDataTableToPDF(GetSet().Tables[0], Server.MapPath("~/Table.pdf"), "C:\\Windows\\Fonts\\simsun.ttc,1", 14);

2、テキストの内容に基づいてPDFファイルを生成する
 private void CreateTxt(string txt, string filepath)
        {
            //      
            Document document = new Document();
            //        
            PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
            //    
            document.Open();
            //          
            document.Add(new Paragraph(txt));
            //      
            document.Close();
        }

3、ヘッダーのフッターを生成する(ただしiTextSharp 5.5このバージョンではこの方法がないので、親たちに探してもらう)
 private void CreatePDFheader(string filepath, string headertxt, string footertxt)
        {
            //      
            Document document = new Document();
            //         
            PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));

            PdfPageEventHelper hh = new PdfPageEventHelper();
           
            //     
            HeaderFooter footer = new HeaderFooter(new Phrase(footertxt), true);
            footer.Border = Rectangle.NO_BORDER;
            document.Footer = footer;

            //        
            document.Open();

            //     
            HeaderFooter header = new HeaderFooter(new Phrase(headertxt), false);
            document.Header = header;
            //       
            document.Add(new Paragraph("This is First Page"));
            //      
            document.NewPage();
            // 2      
            document.Add(new Paragraph("This is Second Page"));
            //       
            document.ResetPageCount();
            //      
            document.Close();
        }