Cấp bậc tác giả:

DOTNET

Hiển thị tiếng việt khi chuyển đổi Html sang Pdf

Được viết bởi webmaster ngày 05/01/2022 lúc 01:34 PM
Tôi đang sử dụng dll itextsharp để chuyển đổi HTML sang pdf. Html, có một số ký tự lỗi hoặc ký tự unicode như α, β .. khi tôi cố gắng chuyển đổi html sang pdf, các ký tự unicode không hiển thị trong tệp pdf.
  • 0
  • 447

Hiển thị tiếng việt khi chuyển đổi Html sang Pdf


Hiển thị các ký tự Unicode trong Chuyển đổi Html sang Pdf:
Tôi đang sử dụng dll itextsharp để chuyển đổi HTML sang pdf. Html, có một số ký tự lỗi hoặc ký tự unicode như α, β .. khi tôi cố gắng chuyển đổi html sang pdf, các ký tự unicode không hiển thị trong tệp pdf.

Vì vậy, hôm nay chúng ta đến với giải pháp chuyển đổi ký tự Unicode html sang pdf bằng thư viện iTextSharp trong ASP.NET.
Sau đây là các bước để hiển thị các ký tự unicode khi chuyển Html sang Pdf
Nếu bạn am hiểu ASP.NET thì bạn biết rất rõ cách tạo một ứng dụng web và thêm tham chiếu dll itextsharp vào project của mình.

ConvertHTMLtoPDF.ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConvertHTMLtoPDF.aspx.cs" Inherits="HTMLtoPDF.ConvertHTMLtoPDF" %>
    <title>CODE SCRATCHER</title>
    <form id="form1" runat="server">
<div id="dvHtml" runat="server" style="margin: 0 0 0 0;">
        <b>CODE SCRATCHER</b>
        <b>Special Characters : </b>
          ¢, £, ¤, ¥, §
        <b>Turkish Characters : </b>
        ş, iö, ğ, ü
        <b>Hindi Characters : </b>
        क, ख, ग, घ
        <b>Thanks,
        Code Scratcher Team</b>
</div>
<center>
        <asp:button id="btnClick" runat="server" onclick="btnClick_Click" style="height: 30px" text="HTML Download as PDF">
    </asp:button></center>
    </form>

ConvertHTMLtoPDF.CS

public partial class ConvertHTMLtoPDF : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void btnClick_Click(object sender, EventArgs e)
        {
            DownloadAsPDF();
        }
        public void DownloadAsPDF()
        {
            try
            {
                string strHtml = string.Empty;
                string pdfFileName = Request.PhysicalApplicationPath + "\\files\\" + "GenerateHTMLTOPDF.pdf";
                StringWriter sw = new StringWriter();                
                HtmlTextWriter hw = new HtmlTextWriter(sw);
                dvHtml.RenderControl(hw);
                StringReader sr = new StringReader(sw.ToString());
                strHtml = sr.ReadToEnd();
                sr.Close();
                CreatePDFFromHTMLFile("<pre><div style="font-family: arial unicode ms;">" + strHtml + "</div></pre>", pdfFileName);
                Response.ContentType = "application/x-download";
                Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", "GenerateHTMLTOPDF.pdf"));
                Response.ContentEncoding = Encoding.UTF8;
                Response.WriteFile(pdfFileName);
                Response.HeaderEncoding = Encoding.UTF8;
                Response.Flush();
                Response.End();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
        
        private void CreatePDFFromHTMLFile(string html, string FileName)
        {
            TextReader reader = new StringReader(html);
            // Bước 1: Tạo đối tượng document
            Document document = new Document(PageSize.A4, 30, 30, 30, 30);
            // Bước 2:
            // Tạo đối tượng writer để lắng nghe document
            // và chuyển hướng luồng XML đến tệp tin
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(FileName, FileMode.Create));
            // Bước 3: tạo đối tượng worker để phân tích cú pháp của document
            HTMLWorker worker = new HTMLWorker(document);
            // Bước 4: Mở document và bắt đầu worker trên document
            document.Open();
            // Bước 4.1: đăng ký font unicode và gán cho nó một allias
            FontFactory.Register("C:\\Windows\\Fonts\\ARIALUNI.TTF", "arial unicode ms");
            // Bước 4.2: Tạo style sheet và thiết lập encoding đến Identity-H
            iTextSharp.text.html.simpleparser.StyleSheet ST = new iTextSharp.text.html.simpleparser.StyleSheet();
            ST.LoadTagStyle("body", "encoding", "Identity-H");
            // Bước 4.3: gán style sheet đến cú pháp html
            worker.Style = ST;
            worker.StartDocument();
            // Bước 5: Đưa html vào trong document
            worker.Parse(reader);
            // Bước 6: Đóng document và worker
            worker.EndDocument();
            worker.Close();
            document.Close();
        }
    }

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML