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();
}
留言列表