XMLWorker

概要

  • HTMLのParseHtml()は上手く動かない事がある?
     Unable to cast object of type 'iTextSharp.text.html.simpleparser.CellWrapper' to type 'iTextSharp.text.Paragraph'.
  • HTMLWorkerはすでにdeprecatedなので、XMLWorkerを使う。

コード

 using iTextSharp.text;
 using iTextSharp.text.pdf;
 using iTextSharp.tool.xml;
 using System.IO;
 
 public class HtmlToPdf
 {
     private const string JapaneseFontName = "c:\\windows\\fonts\\msmincho.ttc,0";
 
     public static byte[] ConvertHtmlToPdf(string html)
     {
         MemoryStream output = new MemoryStream();
 
         using (var document = new Document(PageSize.A4, 30, 30, 30, 30))
         using (var writer = PdfWriter.GetInstance(document, output))
         {
             document.Open();
 
             var fontname = JapaneseFontName;
             var fontProvider = new XMLWorkerFontProvider();
             fontProvider.Register(fontname, "Serif");
 
             var cssText = @"body {font-family: Serif;}";
 
             using (var cssMS = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText)))
             using (var htmlMS = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
             {
                 var xmlWorker = XMLWorkerHelper.GetInstance();
                 xmlWorker.ParseXHtml(writer, document, htmlMS, cssMS, System.Text.Encoding.UTF8, fontProvider);
             }
             document.Close();
         }
 
         return output.ToArray();
     }
 }
 

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2014-04-05 (土) 12:03:00