2011-09-08 34 views
42

thể trùng lặp:
PDF Generation Library for JavaTạo PDF với Java

tôi đang làm việc trên một chương trình hóa đơn cho một công ty kế toán tại địa phương. Cách tốt nhất để tạo tệp PDF bằng Java là gì? Bất kỳ thư viện tốt? Tôi hoàn toàn mới xuất PDF (Trên bất kỳ ngôn ngữ nào).

+0

Bản sao có thể có của [Danh sách các trình chuyển đổi HTML sang PDF] (http://stackoverflow.com/questions/3178448/list-of-html-to-pdf-converters), được đề cập trong [Chuyển đổi tệp HTML sang PDF ] (http://stackoverflow.com/questions/633780/converting-html-files-to-pdf). – trashgod

Trả lời

65

tôi thích xuất ra dữ liệu của tôi vào XML (sử dụng Castor, XStream hay JAXB), sau đó chuyển nó sử dụng một kiểu XSLT vào XSL-FO và đưa ra rằng với Apache FOP sang PDF. Đã làm việc cho đến nay cho báo cáo 10 trang và 400 trang hướng dẫn sử dụng. Tôi thấy điều này linh hoạt hơn và có thể tạo kiểu hơn là tạo các tệp PDF bằng mã sử dụng iText.

+0

Làm thế nào nhanh chóng này có thể chuyển đổi một trang 400 hướng dẫn sử dụng PDF? Tôi đã sử dụng iText, nhưng nó quá chậm đối với một số tài liệu lớn của chúng tôi. –

+0

Xin lỗi, tôi đã làm điều này trong năm 2005-2007, nhưng IIRC nó là phụ thứ hai cho một báo cáo 10 trang đơn giản (với một bản định kiểu được lưu trữ) và hàng chục giây cho một báo cáo 400 trang phức tạp hơn. Làm bộ đệm ẩn biểu định kiểu XSL được phân tích cú pháp khi bạn cần tạo các báo cáo tương tự/tương tự với các dữ liệu khác nhau - làm cho mức tăng khá. –

+0

Tôi cũng có thể đề nghị Vận tốc để xuất dữ liệu vào xml. –

29

Sau đây là vài thư viện để tạo PDF với Java:

  1. iText
  2. Apache PDFBox
  3. BFO

Tôi đã sử dụng iText cho genarating của PDF với một chút đau ở quá khứ.

Hoặc bạn có thể thử sử dụng FOP: FOP là trình định dạng XSL được viết bằng Java. Nó được sử dụng kết hợp với một công cụ chuyển đổi XSLT để định dạng tài liệu XML thành PDF.

+14

Trên trang web iText tôi đọc rằng giấy phép AGPL của họ yêu cầu từ bạn "phân phối tất cả mã nguồn bao gồm sản phẩm của riêng bạn, bao gồm cả nếu nó là một ứng dụng dựa trên web", trong số những thứ khác. Dường như hoàn toàn không được chấp nhận đối với bất kỳ dự án thương mại nào. – mvmn

+0

@mvmn: Bạn có thể mua giấy phép thương mại. – Thilo

+0

Hoặc bạn có thể sử dụng iText 1.3 là Giấy phép Công cộng GNU Affero v3 –

13

Một giải pháp thay thế khác là JasperReports: JasperReports Library. Nó sử dụng iText chính nó và là nhiều hơn một thư viện PDF bạn yêu cầu, nhưng nếu nó phù hợp với nhu cầu của bạn tôi muốn đi cho nó.

Nói một cách đơn giản, nó cho phép bạn thiết kế các báo cáo có thể được lấp đầy trong thời gian chạy. Nếu bạn sử dụng custom datasource, bạn có thể tích hợp JasperReport dễ dàng vào hệ thống hiện có. Nó sẽ giúp bạn tiết kiệm tất cả các vấn đề về bố cục, ví dụ: khi hóa đơn trải rộng trên nhiều trang web nơi mỗi bên phải có chân trang, v.v.