Chuyển đến nội dung chính

Chuyển html pages thành file PDF

Để chuyển 1 trang Html thành file pdf, có khá nhiều thư viện miễn phí lẫn có phí như iTextSharp, WkHtmlToPdf, Prince, Pechkin(.NET Wrapper for WkHtmlToPdf static DLL), TuesPechkin... Tôi đã thử qua 1 số thư viện và nhận thấy:
  • iTextSharp: hỗ trợ html không tốt, hay gặp lỗi khi sử dụng thẻ <ul>, </html> (hay code của mình viết thiếu gì nhỉ :D).
  • WkHtmlToPdf: xuất file pdf từ html rất tốt nhưng có vấn đề nếu dự án là website
  • Prince: hỗ trợ javascript rất tốt nhưng đây là thư viện có tính phí bản quyền.
  • Pechkin: có 1 số vấn đề khi build và deploy website
  • TuesPechkin: khá ít tài liệu nhưng đây là 1 thư viện miễn phí khá tốt để chuyển html sang pdf.

Hôm nay mình sẽ hướng dẫn chuyển 1 page html đơn giản bằng TuesPechkin.

Cài đặt

Mở Package Console Manager
Gõ: "Install-Package TuesPechkin" để cài đặt TuesPechkin.

Chuyển đổi nhanh tài liệu Html

IPechkin converter = Factory.Create();
byte[] result = converter.Convert("Lorem ipsum wampum");

Chuyển đổi từ nguồn Html string

  1. Chuyển View và Master Layout thành chuỗi string
  2. Chuyển đường dẫn tương đối thành đường dẫn tuyệt đối.
  3. Gọi TuesPechkin để thực hiện việc chuyển đổi. 
Bước 1: Chuyển View thành html string

       protected string RenderViewToString(string viewName, object model)
        {
            ViewData.Model = model;
            using (var sw = new StringWriter())
            {
                var viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, "_Layout");
                var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw);
                viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
                return sw.GetStringBuilder().ToString();
            }
        }
Bước 2: (Bạn tự implement)
Bước 3:
       public ActionResult ConfigurePdfSettings()
        {
            var html = RenderViewToString("Index", null);
            html = ConvertRelativePathsToAbsolute(html, "http://yourUrl/");
            var document = new HtmlToPdfDocument
            {
                GlobalSettings =
                {
                    ProduceOutline = true,
                    DocumentTitle = "Pretty Websites",
                    PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize
                    Margins =
                    {
                        //All = 1.375,
                        Unit = Unit.Centimeters
                    }
                },
                Objects = {
                    new ObjectSettings { HtmlText = html }
                }
            };

            // create converter
            IPechkin converter = Factory.Create();

            converter.Error += new TuesPechkin.EventHandlers.ErrorEventHandler(delegate(IPechkin ip, string s)
            {
                Debugger.Log(1, "Convert PDF", s);
            });

            // convert document
            byte[] result = converter.Convert(document);
            return File(result, System.Net.Mime.MediaTypeNames.Application.Octet, "test.pdf");
        }
Chúc các bạn thành công

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.