intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tạo động các tài liệu PDF từ ứng dụng Java

Chia sẻ: Nhung Nhung | Ngày: | Loại File: PDF | Số trang:11

116
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nhiều ứng dụng yêu cầu tạo động các tài liệu PDF. Các ứng dụng như vậy trải rộng từ việc các ngân hàng tạo các báo cáo khách hàng để gửi qua email đến các độc giả mua các chương của cuốn sách cụ thể và nhận chúng dưới định dạng PDF. Danh sách này là vô tận. Trong bài này, chúng tôi sẽ sử dụng thư viện Java iText để tạo ra các tài liệu PDF. Chúng tôi sẽ đưa bạn qua một ứng dụng ví dụ mẫu để bạn có thể tự mình thực hiện nó và hiểu...

Chủ đề:
Lưu

Nội dung Text: Tạo động các tài liệu PDF từ ứng dụng Java

  1. Tạo động các tài liệu PDF từ ứng dụng Java Nhiều ứng dụng yêu cầu tạo động các tài liệu PDF. Các ứng dụng như vậy trải rộng từ việc các ngân hàng tạo các báo cáo khách hàng để gửi qua email đến các độc giả mua các chương của cuốn sách cụ thể và nhận chúng dưới định dạng PDF. Danh sách này là vô tận. Trong bài này, chúng tôi sẽ sử dụng thư viện Java iText để tạo ra các tài liệu PDF. Chúng tôi sẽ đưa bạn qua một ứng dụng ví dụ mẫu để bạn có thể tự mình thực hiện nó và hiểu nó tốt hơn. Làm quen với phiên bản 5.3.0 của iText iText là một thư viện Java có sẵn miễn phí từ http://itextpdf.com/ (xem phần Tài nguyên). Thư viện iText mạnh mẽ và hỗ trợ việc tạo các tài liệu HTML, RTF và XML, ngoài việc tạo các tệp PDF. Bạn có thể chọn một loạt các phông chữ để sử dụng trong tài liệu. Ngoài ra, cấu trúc của iText cho phép bạn tạo ra bất kỳ các kiểu tài liệu nào đã nói ở trên bằng mã tương tự. Thư viện iText chứa các lớp để tạo ra văn bản PDF theo các phông chữ khác nhau, tạo ra các bảng trong tài liệu PDF, thêm các hình mờ vào các trang và v.v. Còn có nhiều tính năng hơn nữa có sẵn trong iText. Không thể trình bày tất cả chúng chỉ trong một bài viết. Chúng tôi sẽ trình bày các vấn đề cơ bản cần thiết để tạo PDF. Để biết thêm thông tin chi tiết, hãy tham khảo tài liệu hướng dẫn về iText từ nhà cung cấp (xem phần Tài nguyên). Chúng tôi sẽ sử dụng Eclipse để phát triển ứng dụng ví dụ mẫu của mình. Là một IDE nguồn mở, Eclipse hoàn toàn miễn phí và khá mạnh. Bạn có thể tải về Eclipse ngay bây giờ (xem phần Tài nguyên). IText API: Xem xét kỹ hơn 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 đó. Com.itextpdf.text.pdf.PdfWriter là một trình viết PDF. 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 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).  com.itextpdf.text.Anchor—Neo (Anchor) có thể là một tài liệu tham khảo hoặc một đích đến của một tài liệu tham khảo.
  2. Tải về và cấu hình iText trong Eclipse Là một thư viện Java thuần túy, iText tồn tại dưới dạng một tệp JAR (xem phần Tài nguyên). Một khi bạn đã tải về thư viện này (chẳng hạn, tại đường dẫn C:\temp), các bước sau đây sẽ cấu hình thư viện iText trong một môi trường Eclipse: 1. Tạo một dự án Java mới trong Eclipse có tên là iText. 2. Nhấn chuột phải vào dự án iText trong khung nhìn Package Explorer và chọn Properties. 3. Nhấn Java Build Path. Trên tab Libraries, nhấn Add External JARs. 4. Duyệt đến thư mục C:\ temp và chọn tệp iText-5.3.0.jar trong thư mục này. 5. Nhấn OK. Bây giờ iText được cấu hình và Eclipse đã sẵn sàng tạo các ứng dụng Java để tạo động các tài liệu PDF. Về đầu trang Ứng dụng ví dụ mẫu Có điều gì tốt hơn khi chính bạn bắt tay vào xây dựng ứng dụng mẫu phải không? Bây giờ bạn có các công cụ (Eclipse IDE) và các thư viện (thư viện iText) cần thiết, chúng ta đã sẵn sàng thiết kế và phát triển một chương trình chạy ví dụ mẫu. Hãy tạo ra một tài liệu PDF đơn giản có chứa một số phần tử cơ bản như văn bản thuần, văn bản màu có phông chữ không theo mặc định, bảng, danh sách, chương, phần, v.v. Mục đích của ứng dụng này là để cho bạn quen với cách sử dụng thư viện iText. Có rất nhiều lớp để thực hiện nhiều công việc cho bạn liên quan đến việc tạo tài liệu PDF. Không thể trình bày tất cả các lớp đó ở đây. Javadocs của iText là một nguồn thông tin tốt về cách sử dụng các lớp đó. Hãy bắt đầu viết mã. Bước đầu tiên là tạo một tài liệu. Một tài liệu là thùng chứa cho tất cả các phần tử của một tài liệu PDF. Liệt kê 1. Tạo đối tượng tài liệu Document document = new Document(PageSize.A4, 50, 50, 50, 50); Đối số đầu tiên là kích thước trang (page size). Đối số tiếp theo tương ứng là các lề trái, phải, đầu trang và cuối trang. Kiểu tài liệu này chưa được định nghĩa. Nó phụ thuộc vào kiểu của trình writer mà bạn tạo. Trong ví dụ mẫu của mình, chúng tôi chọn trình writer là com.itextpdf.text.pdf.PdfWriter. Những trình writer khác là HtmlWriter, RtfWriter, XmlWriter và nhiều trình viết khác nữa. Tên của chúng đã tự giải thích các mục đích của chúng rồi. Liệt kê 2. Tạo đối tượng PdfWriter
  3. PdfWriter writer = PdfWriter.getInstance(document, \ new FileOutputStream("C:\\ITextTest.pdf")); document.open(); Đối số đầu tiên là tài liệu tham chiếu đến đối tượng tài liệu và đối số thứ hai chỉ là tên đúng của tệp sẽ viết kết quả đầu ra vào. Tiếp theo, chúng tôi mở tài liệu để viết. Bây giờ, chúng tôi sẽ thêm một đoạn văn bản vào trang đầu tiên của tài liệu. Bất kỳ văn bản nào đều được thêm vào với sự trợ giúp của lớp com.itextpdf.text.Paragraph. Bạn có thể tạo một đoạn mặc định trong văn bản của mình và các thiết lập mặc định về các phông chữ, màu sắc, kích thước và v.v. Nếu không, bạn có thể cung cấp phông chữ riêng của mình. Trong bài này, chúng tôi cũng sẽ thảo luận về anchor (neo liên kết) đến tài liệu PDF. Trong tài liệu PDF này, chúng tôi đã sử dụng backToTop làm liên kết. Khi bạn nhấn chuột vào liên kết backToTop, nó sẽ đưa bạn đến trang đầu tiên của tài liệu. Bạn cần thiết lập văn bản như là đích neo đến trang đầu tiên. Chúng ta hãy xem cách thiết lập đích neo và thiết lập phông chữ cho đoạn văn bản đã thêm vào. Liệt kê 3. Tạo đối tượng đoạn văn bản Anchor anchorTarget = new Anchor("First page of the document."); anchorTarget.setName("BackToTop"); Paragraph paragraph1 = new Paragraph(); paragraph1.setSpacingBefore(50); paragraph1.add(anchorTarget); document.add(paragraph1); document.add(new Paragraph("Some more text on the \ first page with different color and font type.", FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new CMYKColor(0, 255, 0, 0)))); Hình 1 cho thấy kết quả đầu ra của mã ví dụ mẫu trong Liệt kê 3. Để đóng tài liệu lại, hãy thêm document.close(); vào cuối đoạn mã trong Liệt kê 3.
  4. Hình 1. Kết quả đầu ra của mã ví dụ mẫu trong Liệt kê 3 Bạn chỉ cần xem cách thêm văn bản thuần vào tài liệu PDF. Tiếp theo, chúng ta cần thêm một số phần tử phức tạp vào tài liệu này. Hãy bắt đầu bằng việc tạo một chương mới. Chương (chapter) là một phần đặc biệt, bắt đầu bằng một trang mới và có một con số được hiển thị theo mặc định. Liệt kê 4. Tạo đối tượng chapter Paragraph title1 = new Paragraph("Chapter 1", FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new CMYKColor(0, 255, 255,17))); Chapter chapter1 = new Chapter(title1, 1); chapter1.setNumberDepth(0); Trong đoạn mã của Liệt kê 4, chúng ta đã tạo ra một đối tượng chapter mới là chapter1, có tiêu đề "This is Chapter 1" (Đây là Chương 1). Việc thiết lập số độ sâu là 0 sẽ không hiển thị số chương trên trang.
  5. Một section (phần) là một phần tử con của một chương. Trong đoạn mã của Liệt kê 5, chúng ta tạo ra một section có tiêu đề "This is Section 1 in Chapter 1" (Đây là Phần 1 trong Chương 1). Để thêm một số văn bản vào phần này, chúng ta tạo một đối tượng paragraph (đoạn) khác là someSectionText và thêm nó vào đối tượng section. Liệt kê 5. Tạo đối tượng section Paragraph title11 = new Paragraph("This is Section 1 in Chapter 1", FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD, new CMYKColor(0, 255, 255,17))); Section section1 = chapter1.addSection(title11); Paragraph someSectionText = new Paragraph("This text comes as part of section 1 of chapter 1."); section1.add(someSectionText); someSectionText = new Paragraph("Following is a 3 X 2 table."); section1.add(someSectionText); Trước khi chúng ta thêm bảng, chúng ta hãy xem xét xem tài liệu sẽ trông như thế nào. Thêm hai dòng sau đây để đóng tài liệu trong Hình 2. Sau đó biên dịch và chạy chương trình để tạo ra tài liệu PDF: document.add(chapter1);document.close();. Hình 2. Kết quả đầu ra ví dụ mẫu của chương Tiếp theo, chúng ta tạo một đối tượng table (bảng). Một bảng chứa một ma trận các hàng và các cột. Một ô (cell) trong một hàng có thể mở rộng nhiều hơn một cột. Tương tự như vậy, một ô trong một cột có thể mở rộng nhiều hơn một hàng. Liệt kê 6. Tạo đối tượng table
  6. PdfPTable t = new PdfPTable(3); t.setSpacingBefore(25); t.setSpacingAfter(25); PdfPCell c1 = new PdfPCell(new Phrase("Header1")); t.addCell(c1); PdfPCell c2 = new PdfPCell(new Phrase("Header2")); t.addCell(c2); PdfPCell c3 = new PdfPCell(new Phrase("Header3")); t.addCell(c3); t.addCell("1.1"); t.addCell("1.2"); t.addCell("1.3"); section1.add(t); Trong đoạn mã của Liệt kê 6, chúng ta tạo ra một đối tượng bảng PDFPTable là t có ba cột và tiếp tục thêm các hàng. Tiếp theo, chúng ta tạo ra ba đối tượng PDFPcell, có văn bản khác nhau. Chúng ta tiếp tục thêm chúng vào bảng. Chúng được thêm vào hàng đầu tiên, bắt đầu từ cột đầu tiên, di chuyển sang cột tiếp theo trong cùng hàng. Sau khi hoàn thành một hàng, các ô tiếp theo được thêm vào cột đầu tiên của hàng kế tiếp. Cũng có thể thêm một ô vào bảng bằng cách chỉ cung cấp văn bản của ô đó, chẳng hạn như t.addCell("1.1");. Cuối cùng, đối tượng table (bảng) được thêm vào đối tượng section (phần). Sau cùng, chúng ta hãy xem cách thêm một danh sách vào tài liệu PDF. Một danh sách có chứa một số các ListItem. Một danh sách có thể được đánh số hoặc không được đánh số. Việc chuyển đối số đầu tiên thành true (đúng) có nghĩa là bạn muốn tạo danh sách có đánh số. Liệt kê 7. Tạo đối tượng list (danh sách) List l = new List(true, false, 10); l.add(new ListItem("First item of list")); l.add(new ListItem("Second item of list")); section1.add(l);
  7. Chúng ta đã thêm mọi thứ vào đối tượng chapter1. Bây giờ chúng ta thêm một hình ảnh vào dự án java này. Chúng ta có thể mở rộng quy mô hình ảnh bằng cách sử dụng một trong những phương thức Image (Hình ảnh) sau:  scaleAbsolute()  scaleAbsoluteWidth()  scaleAbsoluteHeight()  scalePercentage()  scaleToFit() Trong Liệt kê 8, chúng ta đã sử dụng phương thức scaleAbsolute. Và sau đó thêm đối tượng image vào section này. Liệt kê 8. Thêm Image vào tài liệu chính Image image2 = Image.getInstance("IBMLogo.bmp"); image2.scaleAbsolute(120f, 120f); section1.add(image2); Lớp com.itextpdf.text.Anchor trong iText đại diện cho một liên kết hoặc tới một trang web bên ngoài hoặc bên trong trong tài liệu. Có thể nhấn chuột vào anchor (neo liên kết) giống như một liên kết trong một trang web. Để thêm anchor chúng ta cần tạo ra một anchor mới và thiết lập tài liệu tham chiếu đến Anchor đích đã tạo ra trong Liệt kê 3. Sau đó thêm anchor này vào phần và thêm phần này vào tài liệu. Liệt kê 9. Thêm Anchor vào tài liệu chính Paragraph title2 = new Paragraph("Using Anchor", FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD, new CMYKColor(0, 255, 0, 0))); section1.add(title2); title2.setSpacingBefore(5000); Anchor anchor2 = new Anchor("Back To Top"); anchor2.setReference("#BackToTop"); section1.add(anchor2);
  8. Không còn các phần tử nào để thêm vào chapter1 nữa, đây là lúc để thêm chapter1 vào document (tài liệu) chính. Chúng ta cũng sẽ đóng đối tượng tài liệu ở đây khi chúng ta đã thực hiện xong ứng dụng ví dụ mẫu. Liệt kê 10. Thêm một chương vào tài liệu chính document.add(chapter1); document.close(); Về đầu trang Chạy ứng dụng ví dụ mẫu 1. Tải ứng dụng ví dụ mẫu, tệp j-itextsample.jar (xem phần Tải về). 2. Giải nén tệp j-itextsample.jar vào một thư mục. Ví dụ, nếu bạn giải nén nó vào C:\temp, thì bạn sẽ đặt các tệp nguồn và lớp vào C:\temp\com\itext\test. 3. Mở một dấu nhắc lệnh và thay đổi thư mục này thành C:\temp. 4. Thiết lập đường dẫn lớp của hệ thống của bạn theo dấu nhắc lệnh này. Hãy đưa C:\temp\itext-5.3.0.jar vào đường dẫn lớp của hệ thống. Trên Windows®, chạy lệnh set classpath=C:\temp\itext-5.3.0.jar;%classpath%. 5. Chạy ứng dụng bằng lệnh java com.itext.test.ITextTest. Chương trình sẽ tạo ra tài liệu ITextTest.pdf tại C:\. Hình 3 cho thấy một ảnh chụp màn hình của trang đầu tiên của tài liệu PDF.
  9. Hình 3. Ảnh chụp màn hình của tài liệu PDF Hình 4 cho thấy một ảnh chụp màn hình của Chương 1 (Chapter 1) và phần, văn bản, bảng, danh sách và hình ảnh của nó trong tài liệu PDF.
  10. Hình 4. Ảnh chụp màn hình của tài liệu PDF Hình 5 cho thấy một ảnh chụp màn hình của liên kết Neo trong tài liệu PDF.
  11. Hình 5. Ảnh chụp màn hình của tài liệu PDF
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2