1. Trang chủ
  2. » Thể loại khác

HƯỚNG dẫn XUẤT PDF với ITEXTPDF

7 1,3K 8

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 663,8 KB

Nội dung

GIỚI THIỆU: Nhiều ứng dụng yêu cầu tạo động các trang PDF, chẳng hạn như xuất các hoá đơn bán hàng, xuất các báo cáo dữ liệu bán hàng hoặc mua hàng,... iTextPDF là một thư viện rất mạnh

Trang 1

HƯỚNG DẪN XUẤT PDF VỚI ITEXTPDF

1 GIỚI THIỆU:

Nhiều ứng dụng yêu cầu tạo động các trang PDF, chẳng hạn như xuất các hoá đơn bán hàng, xuất các báo cáo dữ liệu bán hàng hoặc mua hàng, Để tạo ra các trang PDF trong Java, chúng ta sẽ thư viện Java có sẵn miễn phí iTextPDF (http://developers.itextpdf.com/) iTextPDF là một thư viện rất mạnh mẽ hỗ trợ đầy đủ các yêu cầu của một trang PDF, tạo

ra các font chữ khác nhau, thêm các hình ảnh, định dạng các bảng khác nhau, thêm các thông tin metadata như title, subject, author,

2 MỘT SỐ ITEXT API THÔNG DỤNG:

Lớp com.itextpdf.text.Document là lớp chính để tạo tài liệu PDF Đây là lớp đầu tiên được khởi chạy Một khi đã tạo ra tài liệu, bạn cần có một trình viết để viết vào lớp đó.Để khai báo trình viết pdf chúng ta sử dụng lớp Com.itextpdf.text.pdf.PdfWriter Một số các lớp thường dùng phổ biến khác được cho dưới đây:

com.itextpdf.text.Paragraph—Lớp này đại diện cho một đoạn thụt vào

com.itextpdf.text.Chapter—Lớp này đại diện cho một chương trong tài liệu PDF Nó

được tạo ra bằng cách sử dụng một Paragraph (đoạn) làm tiêu đề và một số kiểu int làm số chương

com.itextpdf.text.Font—Lớp này chứa tất cả các đặc tả của một phông chữ, chẳng hạn như họ các phông chữ, kích thước, kiểu dáng và màu sắc Các phông chữ khác nhau được khai báo như các hằng số tĩnh trong lớp này

com.itextpdf.text.List—Lớp này đại diện cho một danh sách, rồi danh sách này lại chứa

một số ListItems (các mục danh sách)

com.itextpdf.text.pdf.PDFPTable—Đây là một bảng có thể được đặt ở một vị trí tuyệt đối, nhưng cũng có thể được thêm vào tài liệu làm lớp Table (bảng)

Trang 2

Table 1Bảng mô tả mối liên hệ giữa document với các class khác

DOCUMENT

3 CÁC BƯỚC TẠO MỘT TRANG PDF:

Có thể tạm chia việc xuất file Pdf gồm 5 bước sau:

 Bước 1: Tạo một đối tượng Document

 Bước 2: Tạo một thể hiện PdfWriter

 Bước 3: Mở đối tượng Document đã khởi tạo

 Bước 4: Thêm các nội dung Ở bước này, có thể tạm chia làm 2 bước sau Một là chuẩn bị dữ liệu từ database Thứ hai là định dạng cách tài liệu sẽ hiển thị, như định dạng các vị trí tương đối của các phần tử để đổ dữ liệu mà chúng ta đã chuẩn bị từ bước trước đó

 Bước 5: Đóng Document

Paragraph

Chapter

Paragraph

Paragraph

PdfPCell

PDFPTable

Image

Trang 3

Document document = new Document(); Bước 1

PdfWriter.getInstance(

document,new FileOutputStream(null)); Bước 2

document.add(new Paragraph("Hello world")); Bước 4

4 HƯỚNG DẪN THAO TÁC MỘT SỐ LỚP CƠ BẢN TRONG SERVLET:

Chúng ta sẽ tạo ra một trang PDF đơn giản có chưa các thành phần cơ bản như văn bản thuần các đoạn text, các bảng liệt các dữ liệu cơ bản,…

Bước 0: Bước này dùng để định nghĩa kiểu trả về response cho client là loại pdf và

setHeader cơ bản cho ứng dụng

response.setContentType("application/pdf");

response.setHeader("Content-Disposition"," inline; filename=DonHang.pdf");

Bước 1: Tạo đối tượng tài liệu (Document) Một Document được xem như 1 cái thùng để

chứa tất cả các phần từ của một tài liệu như Image, Paragraph,…

Document document = new Document( PageSize.A4, 50, 50, 50, 50);

Đối số đầu tiên là kích thước trang, một số trang thường dùng như PageSize.A4,

PageSize.A5, PageSize.LETTER,… 4 đối số còn lại thứ tự canh lề sẽ là trái, phải, đầu và cuối trang

Bước 2: Tạo đối tượng PdfWriter

PdfWriter.getInstance(document, outstream);

Document.open();

Đối tượng đầu tiền là tham chiếu đến đối tượng Document được khai báo ở bước 1 Đối số thứ 2 là tên tài liệu để mở ra viết Vì ứng dụng web nên chúng ta sử dụng ServletOutputStream

Tiếp theo là mở đối tượng document

Bước 3: Thiết lập font chữ cho trang pdf

BaseFont bf = BaseFont.createFont("c:\\windows\\fonts\\times.ttf",

BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

// khỏi tạo font chữ

Font font10 = new Font(bf, 10, Font.NORMAL);

Font font11_bold= new Font(bf, 11, Font.BOLD);

Trang 4

Tạo 1 đối tượng basefont bằng cách chỉ rõ đường dẫn sẽ lưu font chữ, xác định kiểu encoding Thông thường đường dẫn lưu font chữ, chúng ta sẽ chỉ rõ những font thường dùng như VNTime, Arial,…

Sau khi khởi tạo đối tượng BaseFont, chúng ta sử dụng nó để làm tham số tạo ra các font cho trang pdf, như ITALIC, BOLD, kích cỡ,… Xem thêm APIDOC của ITEXT

Bước 5: Chuẩn bị nội dung từ cơ sở dữ liệu Ở đây, chúng ta có thể chuẩn bị nội dung bằng

cách lấy dữ liệu thông qua các câu truy vấn Hoặc sử dụng các phương thức của lớp chúng

ta truyền vào đã chuẩn bị sẵn dữ liệu

Bước 6: Trình bày dữ liệu theo format thông qua paragraph, table, image,

Tạo 1 đối tượng Paragraph :

Paragraph pa = new Paragraph("Đoạn text cần truyền vào", font1);

document.add(pa);

Kết quả sẽ như sau:

Tạo đối tượng PdfPTable:

Một bảng chứa nhiều hàng và nhiều cột chứa nội dung thông tin, chẳng hạn như bảng các đơn hàng chứa các sản phẩm mà người dùng đã mua

Trang 5

PdfPTable Table = new PdfPTable(3);

Table.setSpacingBefore(25);

Table.setSpacingAfter(25);

PdfPCell cell

cell = new PdfPCell( new Phrase(“header1”));

Table.addCell(cell);

cell = new PdfPCell ( new Phrase(“header1”));

Table.addCell(cell);

cell = new PdfPCell ( new Phrase(“header1”));

Table.addCell(cell);

Table.addCell(“1.1”);

Table.addCell(“1.2”);

Table.addCell(“1.3”);

document.add(Table);

Đầu tiên, chúng sẽ khởi tạo bảng có số cột là 3 thông qua phương thức khởi tạo có tham số của PdfPTable = new PdfPTable( số cột) Set các khoảng cách trước và sau table thông qua 2 phương thức, setSpacingBefore và setSpacingAfter

Đối với 1 table sẽ có nhiều cell Ở đây itext tạo ra lớp PdfPCell để chúng ta xử lý trên từng

ô Số ô được thêm vào sẽ theo thứ tự lần lượt từ trái qua phải và từ trên xuống dưới Định dang Cell thông qua Phrase hoặc Paragraph

PdfPCell cell = new PdfPCell(new Paragraph("CONG TY GIAI PHAP DOANH NGHIEP TOAN CAU ", font11_bold));

cell.setPaddingLeft(5.0f);

cell.setBorder(0);

Chúng ta có thể định để nó có font chữ kiểu khác Ngoài ra chúng ta có thể set padding, canh trái, phải, set border cho các cell

Ngoài ra, PdfPTable còn cho phép set độ rộng của các cột thông qua phương thức

float[] withsKM = { 10.0f, 45.0f, 15.0f, 15.0f, 12.0f};

// khởi tạo bảng có số cột là bằng 8 cột

PdfPTable table = new PdfPTable(5);

// set độ rộng của table, mặc định là 80%

table.setWidthPercentage(100);

// set độ rộng cho từng cột

table.setWidths(withsKM);

Thêm đối tượng Image:

Một số chức năng cần có hình ảnh, chẳng hạn như logo của công ty cần xuất hiện trên hoá đơn iText cung cấp lớp Image cho phép người sử dụng tạo ra các hình ảnh

Trang 6

Image hinhanh=Image.getInstance(

getServletContext().getInitParameter("path")+"/images/vietcombanknew.p ng");

Hinhanh.scaleAbsolute(120f,120f);

// set position

img.setAbsolutePosition(500f, 650f);

//scales

img.scalesAbsolute(150f, 150f);

Img.scalePercent(120f);

// rotating

Img.setRotationDegrees(45f);

Như vậy, cách để tạo ra 1 trang pdf bằng ItextPdf rất đơn giản Hi vọng mọi người sẽ làm được

bài tập tạo ra xuất ra trang pdf dạng như sau:

tên, địa chỉ: lấy từ bảng Khách hàng

Các sản phẩm các bạn sẽ load dưa trên đơn hàng

LƯU Ý:

Các bạn nếu không tìm ra cách làm, trước hết có thể tìm kiếm

dụ minh hoạ chúng ta có thể tìm kiếm được, để chúng ta luôn tự tìm tòi và học hỏi

5 TÀI LIỆU THAM KHẢO:

- https://www.ibm.com/developerworks/vn/library/java/2013Q2/os-javapdf/

- http://developers.itextpdf.com/examples,

- http://tutorials.jenkov.com/java-itext/getting-started.html

Ngày đăng: 27/09/2016, 22:32

TỪ KHÓA LIÊN QUAN

w