Lorem Ipsum chỉ đơn giản là văn bản giả của ngành công nghiệp in ấn và sắp chữ. Lorem Ipsum là văn bản giả tiêu chuẩn của ngành công nghiệp kể từ những năm 1500, khi một nhà in không xác định lấy một kho mẫu và xáo trộn nó để tạo thành một cuốn sách mẫu. Nó đã tồn tại không chỉ năm thế kỷ, mà còn là bước nhảy vọt sang sắp chữ điện tử, về cơ bản vẫn không thay đổi.
'Trong bài viết này, tôi sẽ minh họa cách tạo tệp pdf từ html trong PHP bằng thư viện mã nguồn mở TCPDF
Có rất nhiều thư viện nguồn mở trong php có thể được sử dụng để tạo tệp pdf từ html, nhưng hầu hết chúng đều thiếu một số tính năng của pdf như cách thao tác văn bản được viết bằng ngôn ngữ Phải sang Trái, cũng như xử lý các loại phông chữ khác nhau
Mặt khác, TCPDF là một thư viện nguồn mở mạnh mẽ có hầu hết tất cả các tính năng cần thiết để tạo tệp pdf hoạt động tốt, từ các tính năng này
- tất cả các định dạng trang tiêu chuẩn, định dạng trang tùy chỉnh, lề tùy chỉnh và đơn vị đo lường
- UTF-8 Unicode và các ngôn ngữ từ phải sang trái
- Phông chữ TrueTypeUnicode, OpenTypeUnicode, TrueType, OpenType, Type1 và CID-0
- các phương pháp xuất bản một số mã XHTML + CSS, Javascript và Biểu mẫu
- hình ảnh [PNG, JPG, GIF], đồ họa [hình học] và phương pháp chuyển đổi
- quản lý đầu trang và chân trang tự động
- mã hóa tài liệu lên đến 256 bit và chứng nhận chữ ký số
Kiểm tra trang web chính thức của TCPDF để biết phần còn lại của các tính năng có sẵn
Tải xuống & Sử dụng
Chuyển đến kho lưu trữ github của TCPDF và sao chép hoặc tải xuống
Bạn cần thêm thư viện vào thư mục dự án của mình và sau đó đưa nó vào như thế này
include_once['TCPDF/tcpdf.php'];
Bằng cách bao gồm tcpdf chính. php bạn có quyền truy cập vào tất cả các lớp và phương thức
Cấu hình
Tệp cấu hình chính nằm trong TCPDF/config/tcpdf_config. php. Tệp này chứa cấu hình chung áp dụng theo cơ sở tài liệu khi tạo tệp pdf. Cố gắng bỏ ghi chú và thay đổi các giá trị cấu hình để phù hợp với nhu cầu của bạn
Điều chỉnh các giá trị cấu hình này
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];
Các cấu hình trên là các cấu hình cơ bản cần thiết nhưng bạn có thể tự mình khám phá thêm vì chúng tôi không đề cập đến chúng trong hướng dẫn này
Như được hiển thị, tôi đã tạo một thư mục mới cho hình ảnh trong thư mục gốc của dự án, thư mục này sẽ được sử dụng để lưu trữ logo tiêu đề
define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; define ['PDF_HEADER_LOGO', 'my_logo.png'];
Thí dụ
Hãy tạo một tệp mới trong thư mục gốc của dự án có tên là chỉ mục. php với nội dung sau
mục lục. php
include_once['TCPDF/tcpdf.php']; // create new PDF document $pdf = new TCPDF[PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false]; $pdf->SetCreator["Wael Salah"]; $pdf->SetAuthor['Wael Salah']; $pdf->SetTitle['Demonstrating pdf with php']; $pdf->setHeaderData[PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING, array[0, 6, 255], array[0, 64, 128]]; $pdf->setFooterData[array[0,64,0], array[0,64,128]]; $pdf->setHeaderFont[array[PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN]]; $pdf->setFooterFont[Array[PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA]]; // set default monospaced font $pdf->SetDefaultMonospacedFont[PDF_FONT_MONOSPACED]; $pdf->SetMargins[PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT]; $pdf->SetHeaderMargin[PDF_MARGIN_HEADER]; $pdf->SetFooterMargin[PDF_MARGIN_FOOTER]; // set auto page breaks $pdf->SetAutoPageBreak[TRUE, PDF_MARGIN_BOTTOM]; // set image scale factor $pdf->setImageScale[PDF_IMAGE_SCALE_RATIO]; // --------------------------------------------------------- // set default font subsetting mode $pdf->setFont['dejavusans', '', 14, '', true]; $pdf->AddPage[]; $html = SetCreator["Wael Salah"]; $pdf->SetAuthor['Wael Salah']; $pdf->SetTitle['Demonstrating pdf with php'];
Sau đó, tôi đặt dữ liệu đầu trang và chân trang
$pdf->setHeaderData[PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING, array[0, 6, 255], array[0, 64, 128]]; $pdf->setFooterData[array[0,64,0], array[0,64,128]];
Phương thức setHeaderData[] chấp nhận logo tiêu đề, chiều rộng logo, tiêu đề tiêu đề, văn bản chuỗi tiêu đề, tất cả các hằng số này được xác định trong tệp cấu hình mà chúng tôi đã mô tả ở trên. Hai đối số còn lại biểu thị màu RGB cho văn bản và dòng
Sau đó, tôi đặt phông chữ đầu trang và chân trang như được hiển thị
$pdf->setHeaderFont[array[PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN]]; $pdf->setFooterFont[Array[PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA]];
Hai phương thức đó chấp nhận một mảng với họ phông chữ và cỡ chữ
Điều quan trọng nữa là đặt lề cho tài liệu, điều này đạt được bằng cách gọi các phương thức đó
________số 8_______Sau đó, tôi đã bật tùy chọn ngắt trang tự động bằng cách gọi SetAutoPageBreak[]. Ngoài ra đối với hình ảnh tôi đặt tỷ lệ tỷ lệ là 1. 25 bằng cách gọi setImageScale[]. Cuối cùng, tôi đặt phông chữ cho văn bản tài liệu bằng cách gọi phương thức setFont[] lấy họ phông chữ, kiểu, kích thước và tệp phông chữ
Bước thứ hai tôi đã thêm một trang mới như thế này
$pdf->AddPage[];
Khi nào bạn cần thêm một trang mới, bạn phải gọi phương thức này. Tiếp theo, tôi đã chỉ định văn bản html sẽ được ghi vào tệp pdf, sau đó chúng tôi gọi phương thức writeHtml[] để ghi html vào trang pdf
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];0
Cuối cùng để tạo tập tin
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];1
Phương thức Output[] lấy tên tệp và tham số thứ hai xác định một ký tự đại diện cho đích để gửi tài liệu tới
- Tùy chọn “Tôi” có nghĩa là gửi tệp sẽ được hiển thị trên trình duyệt
- “D” gửi tệp tới trình duyệt và buộc tải xuống tệp
- “F” lưu vào tệp máy chủ cục bộ
- “S” trả về tài liệu dưới dạng chuỗi
Thêm trang mới
Việc thêm các trang mới được thực hiện dễ dàng bằng cách gọi phương thức AddPage[], hãy thêm hai trang nữa vào ví dụ trên, thêm mã này sau $pdf->writeHTML[$html]
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];2
Thêm hình ảnh
Bạn có thể dễ dàng thêm hình ảnh trong html và TCPDF sẽ xử lý công việc khó khăn để hiển thị những hình ảnh đó, hãy thêm một trang mới có thẻ img
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];3
HTML & CSS
Thư viện này đi kèm với khả năng áp dụng mã css cho văn bản html, sau đó nó sẽ chuyển đổi mã này thành kiểu dáng pdf tương ứng như trong ví dụ này
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];4
Ngôn ngữ từ phải sang trái
Như chúng tôi đã đề cập trước đó rằng TCPDF có hỗ trợ đầy đủ các ngôn ngữ RTL bằng cách sử dụng mã hóa “UTF-8” mà chúng tôi đã chuyển khi khởi tạo hàm tạo TCPDF[], vì vậy, hãy thêm một trang mới có văn bản tiếng Ả Rập
// Installation path [/var/www/html/project folder/TCPDF/] define ['K_PATH_MAIN', '/var/www/html/pdf-tutorial/TCPDF/']; // URL path to tcpdf installation folder [//localhost/tcpdf/]. define ['K_PATH_URL', '//localhost/pdf-tutorial/tcpdf/']; // Path for PDF fonts. define ['K_PATH_FONTS', K_PATH_MAIN.'fonts/']; // Default images directory for example used for logos define ['K_PATH_IMAGES', K_PATH_MAIN.'../images/']; // Default image logo used be the default Header[] method. define ['PDF_HEADER_LOGO', 'my_logo.png']; // Header logo image width in user units. define ['PDF_HEADER_LOGO_WIDTH', 30]; // Cache directory for temporary files [full path]. define ['K_PATH_CACHE', '/tmp/'];5
Như đã thấy ở trên, tôi đã thêm một số văn bản tiếng Ả Rập và nó sẽ hiển thị chúng một cách chính xác. Thư viện có rất nhiều chức năng khác để định dạng và thao tác với pdf, tiếc là tôi sẽ không đề cập đến tất cả những chức năng này trong hướng dẫn này nhưng tôi khuyến khích bạn khám phá chúng trên trang web chính thức của TCPDF