C#很多人使用iTextsharp來匯出pdf檔,
升級成iText7 (支援.net 6 以上環境) 後遇到中文無法顯示與字型問題
範例是把寫好的html語法轉出pdf檔並指定中文字體與字型,PDF檔為byte array格式輸出

using iText.Html2pdf;
using iText.Html2pdf.Resolver.Font;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Layout.Font;

public byte[] ConvertHtmlTextToPDF(string htmlText)
{
    ConverterProperties properties = new ConverterProperties();
    // 第三個參數需為True,先抓主機的預設,讓中文可以顯示
    DefaultFontProviderprovider = new DefaultFontProvider(true, true, true); 
    FontProvider fontprovider = new FontProvider(provider.GetDefaultFontFamily());
    // 加入微軟正黑體 (如果要用預股的系統字體,不想用微軟正黑體,上面的provider一定要加)
    fontprovider.AddFont("C:/Windows/Fonts/msjh.ttc,1");   
    properties.SetFontProvider(fontprovider);
    // 接下來把html語法輸出為PDF         
    MemoryStream baos = new MemoryStream();
    PdfDocument temp = new PdfDocument(new PdfWriter(baos));
    // PageSize為A4
    temp.SetDefaultPageSize(PageSize.A4);
    // HtmlConverter是讀html語法的關鍵,需要再下載itext7.pdfhtml 這個package - https://www.nuget.org/packages/itext7.pdfhtml
    HtmlConverter.ConvertToPdf(htmlText, temp, properties);
    return baos.ToArray();
}

arrow
arrow
    文章標籤
    .net C#
    全站熱搜
    創作者介紹
    創作者 湯瑪的吳 的頭像
    湯瑪的吳

    安達利機車行

    湯瑪的吳 發表在 痞客邦 留言(0) 人氣()