2009-11-28 48 views
7

Tôi có một ứng dụng PHP cần tạo một số hoá đơn PDF và bảng chấm công PDF với đầu trang/chân trang đẹp mắt. Một số người dùng Stackoverflow khuyên bạn nên sử dụng TCPDF để tạo tài liệu PDF. Trong nghiên cứu của tôi, tôi phát hiện ra hai cách tiếp cận để PDF tạo ra:HTML sang PDF so với Lập trình tạo PDF qua PHP

1) lập trình định dạng PDF như sau:

$tcpdf->SetFillColor(255, 0, 0); 
    $tcpdf->SetTextColor(255); 
    $tcpdf->SetDrawColor(128, 0, 0); 
    $tcpdf->SetLineWidth(0.3); 
    $tcpdf->SetFont('', 'B'); 

2) Chuyển đổi HTML sang PDF

Làm thế nào để quyết định mà tôi tiếp cận tôi nên sử dụng?

+0

Đây là hướng dẫn hay mà tôi tin chắc chắn sẽ giúp bạn [Hướng dẫn tạo tệp PDF động trong các trang web] (http://blog.geotitles.com/2011/09/tutorial-on-dynamically-creating-pdf- file-in-websites /) –

+0

Liên kết trên dường như đã cũ. – srm

Trả lời

2

Tôi có thể đề xuất Zend_Pdf, là một phương pháp có lập trình theo phân loại của bạn.

Tóm tắt HTML rất hay nhưng tôi không tin rằng bạn có toàn bộ sức mạnh và khả năng kiểm soát API vẽ hình học đầy đủ. Hãy cảnh giác với các thư viện như fpdf không hỗ trợ UTF-8 ngoài hộp và sử dụng trình phân tích cú pháp của người nghèo để 'chuyển đổi' HTML thành PDF.

Đối với ứng dụng của bạn, tôi đã tạo ra một hệ thống tạo hóa đơn được lập biểu mẫu. Người dùng của tôi có thể tải lên một mẫu PDF, được trích xuất bởi Zend_Pdf. Mẫu này sau đó được sử dụng cho mọi trang của hóa đơn được tạo, cho phép tùy chỉnh dễ dàng.

Lưu ý rằng đối tượng của tôi chủ yếu là các nhà thiết kế đồ họa có khả năng sản xuất các mẫu này, vì vậy đó là giải pháp thích hợp ở đây. Nếu khán giả của bạn chỉ quen thuộc với HTML, 'chuyển đổi' HTML sang PDF có thể là cách tốt nhất.

+0

Liên kết bị hỏng –

+0

Zend_Pdf bị bỏ qua - https://github.com/zendframework/ZendPdf - và họ đề xuất [TCPDF] (https://tcpdf.org/) làm người thay thế. –

3

Tôi luôn khuyên bạn nên tạo tệp PDF động nhưng dựa trên các mẫu có thể được chỉnh sửa bằng công cụ người dùng cuối hoặc - ít nhất - không phải là lập trình viên. Trong trường hợp của bạn, đó có thể là HTML. Đối với tôi, giải pháp lý tưởng là lấy mẫu Office, điền nó với các giá trị theo lập trình và xuất nó thành PDF, bất cứ khi nào về mặt kỹ thuật có thể. Tôi làm mẫu điền văn bản trong PHP bằng cách sử dụng tbsOOO và nó hoạt động khá tốt.

Lý do chính để sử dụng phương pháp dựa trên mẫu để tạo tài liệu từ đầu: người dùng có thể thiết kế mẫu khi chúng phù hợp và bạn sẽ không cần thiết khi thiết kế cần thay đổi. (Và nó sẽ cần thay đổi một ngày.) Chỉ khi dữ liệu được chèn cần phải được thay đổi hoặc mở rộng theo một cách nào đó, lập trình viên sẽ được phát. Đó là một khối lượng công việc khổng lồ.

0

tôi cũng khuyên bạn nên chuyển đổi HTML sang PDF:

  • Nó là dễ dàng hơn để nhận ra
  • Nó là dễ dàng hơn để thay đổi bố cục/thiết kế sau
  • Bạn có thể có thể tái sử dụng một số html của trang

Khi tôi đã từng tạo ra một thế hệ PDF cho một trang web tôi đã sử dụng html2ps và sau đó chuyển đổi postscript thành pdf sau này.

1

Xin chào bạn có hai tùy chọn. Bạn có thể sử dụng dompdf, cho phép bạn thiết kế tài liệu của mình dưới dạng tài liệu html thông thường và tạo kiểu với css. Bạn có thể biến tài liệu này thành pdf. Kinh nghiệm của tôi rất tốt. Tôi render một trang html thông thường bằng cách sử dụng Zend_View và biến nó thành pdf. Bằng cách này, bạn có một mẫu cực kỳ linh hoạt, beacuse bạn có thể thực hiện tất cả các loại quyết định hiển thị trong chế độ xem tạo html của bạn.

→ xem list of css-compatability.

Hoặc bạn có thể sử dụng livedocx. Điều này cũng cho phép một phương pháp tiếp cận dựa trên mẫu, nhưng cứng nhắc hơn và ít tốn kém hơn. A integration for Zend Framework đang trên đường.

0

Tôi đề xuất định dạng có lập trình.

Trong thế giới .net Tôi đã có trải nghiệm tiêu cực rõ ràng với trình chuyển đổi html sang pdf. Chúng dường như rơi vào 2 danh mục:

Những quảng cáo 'phân tích cú pháp' html của bạn và cố gắng biến nó thành pdf. Những điều này thường thiếu một số tính năng cơ bản thực sự như phong cách trang và hỗ trợ cho bất cứ điều gì nhưng bố trí dựa trên bảng.

Những người 'in' html của bạn vào một hình ảnh và dán vào pdf. Đây thực sự có thể tạo ra một tài liệu phong nha. Họ dường như làm việc bằng cách liên kết một trình duyệt vào thư viện gây ra vấn đề luồng và hiệu suất kém.

Tôi đã có trải nghiệm tầm thường với apis pdf trực tiếp nhưng php dường như có một số thư viện tốt hơn đáng kể ở mặt trận này.

+0

Điều này hoàn toàn khác với thế giới php thực sự. Các thư viện có lập trình như Zend_Pdf là những thư viện hút. Như tôi đã đề nghị, dompdf rất tốt trong html sang pdf. Nó không liên kết một trình duyệt trong thư viện hoặc những thứ như vậy (thậm chí không ai dám nghĩ về điều này) –

1

Tôi đã có kinh nghiệm phong phú với cả ba phương pháp:

  1. Tạo tài liệu lập trình sử dụng TCPDF (trong đó, mặc dù nó được bắt nguồn từ FPDF, KHÔNG hỗ trợ UTF-8 out of the box). Mặc dù tôi là một fan hâm mộ lớn của Zend Framework, nó cần phải được lưu ý rằng Zend_Pdf là không đủ phong phú nhưng trong bộ tính năng của nó được sử dụng theo cách này.

  2. Có một nhà thiết kế đồ họa tạo mẫu, tải mẫu lên bằng Zend_Pdf và sau đó thêm nội dung bổ sung vào đó. Zend_Pdf (1.10.2 - 1.10.7) hoạt động khá tốt trong trường hợp này, EXCEPT khi cố gắng tạo một trang mới và thêm nó vào tài liệu - điều này đã ném rất nhiều lỗi.

  3. Chuyển đổi từ HTML sang PDF bằng cách sử dụng htmldoc. Cách tiếp cận này hút nặng, nhưng chủ yếu là do hạn chế trong htmldoc.

Tôi chưa sử dụng TCPDF để chuyển đổi HTML sang PDF, nhưng xét theo chất lượng tổng thể của mã tôi đoán nó sẽ làm khá tốt. (Tôi đã thực sự đẩy TCPDF đến các giới hạn, bao gồm hiển thị các tài liệu đồ họa phong phú trong các bộ ký tự RTL, tiếng Trung Quốc, v.v. và nó đã hoạt động hoàn hảo). Vì vậy, nếu bạn quyết định thực hiện theo chương trình, tôi khuyên bạn nên sử dụng TCPDF nhưng nếu bạn có mẫu đẹp từ nhà thiết kế đồ họa và dự định chỉ thêm công cụ lên trên, tải nó lên bằng Zend_Pdf và sửa đổi từ đó là lựa chọn hợp lý (mặc dù bạn vẫn sẽ kết thúc việc triển khai gói từ và một số nội dung cơ bản khác).