Tải bản đầy đủ (.pdf) (7 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (663.8 KB, 7 trang )

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 ( />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).


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

Chapter

Image



DOCUMENT
Paragraph
Paragraph
Paragraph
PDFPTable
PdfPCell

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


Document document = new Document();
PdfWriter.getInstance(
document,new FileOutputStream(null));
document.open();
document.add(new Paragraph("Hello world"));

document.close();

Bước 1
Bước 2
Bước 3
Bước 4
Bước 5

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);


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.


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.


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

ở đây có hầu hết các ví
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:
-

/> /> />



×