Chuyển đổi HTML + CSS sang PDF [đã đóng]


1628

Tôi có một tài liệu HTML (không phải XHTML) hiển thị tốt trong Firefox 3 và IE 7. Nó sử dụng CSS khá cơ bản để tạo kiểu cho nó và hiển thị tốt trong HTML.

Bây giờ tôi đang theo cách chuyển đổi nó thành PDF. Tôi đã thử:

  • DOMPDF : nó có vấn đề lớn với các bảng. Tôi đã tìm ra các bảng lồng nhau lớn của mình và nó đã giúp (trước khi nó chỉ tiêu tốn tới 128M bộ nhớ rồi chết - đó là giới hạn của tôi đối với bộ nhớ trong php.ini) nhưng nó tạo ra một mớ hỗn độn các bảng và dường như không nhận được hình ảnh. Các bảng chỉ là những thứ cơ bản với một số kiểu viền để thêm một số dòng tại các điểm khác nhau;
  • HTML2PDF và HTML2PS : Tôi thực sự đã gặp may mắn hơn với điều này. Nó hiển thị một số hình ảnh (tất cả các hình ảnh là URL Biểu đồ của Google) và định dạng bảng tốt hơn nhiều nhưng dường như có một số vấn đề phức tạp mà tôi chưa tìm ra và tiếp tục chết với các lỗi node_type () không xác định. Không chắc chắn nơi để đi từ đây; và
  • Htmldoc : điều này dường như hoạt động tốt trên HTML cơ bản nhưng hầu như không hỗ trợ CSS vì vậy bạn phải làm mọi thứ trong HTML (tôi không nhận ra nó vẫn là năm 2001 ở Htmldoc-đất ...) nên nó vô dụng với tôi.

Tôi đã thử một ứng dụng Windows có tên Html2Pdf Pilot thực sự đã làm một công việc khá tốt nhưng tôi cần một cái gì đó ở mức tối thiểu chạy trên Linux và lý tưởng chạy theo yêu cầu thông qua PHP trên Máy chủ web.

Tôi còn thiếu gì, hoặc làm cách nào để giải quyết vấn đề này?


9
Html2Pdf thực sự sử dụng một phiên bản nhúng của IE để hiển thị trang, sau đó chuyển đổi nó thành PDF - có thể thông qua cơ chế in của IE.
Joel Mueller

55
vì đây là một câu hỏi năm 2008, dompdf giờ đã trưởng thành hơn rất nhiều. ;-)
Hendra Uzia

5
dompdf bây giờ hỗ trợ CSS 2.1 và có thể đối phó với @import, @media@screenquy tắc, và sẽ được tải stylesheets bên ngoài. Nó cũng đi kèm với tất cả mọi thứ cần thiết để nó hoạt động, mặc dù có những thứ bạn có thể cài đặt để có hiệu suất tốt hơn so với libs mặc định. code.google.com/p/dompdf
perfectNotLizards

6
Cập nhật 2015: Sau khi nghiên cứu rất nhiều tùy chọn, chúng tôi đã quyết định sử dụng wkhtmltopdf, đây là một tiện ích tuyệt vời, chúng tôi đấu tranh với CSS vì chúng tôi có tệp CSS bên ngoài nhưng sau đó chúng tôi đã áp dụng thủ thuật đặt liên kết giả CSS vào phần tử HTML mà chúng tôi muốn chuyển đổi và thiết lập đúng đường dẫn nó hoạt động như MAGIC !!!
Anshul Nigam

10
Tôi tin rằng mọi người sẽ sớm thấy Chrome / Chromium không đầu chrome --headless --print-to-pdf="path/to/pdf" https://your_url là công cụ tạo html, pdf nhanh nhất và dễ nhất, crorms.com/603559 vì nó hỗ trợ hầu hết các tính năng html mà các nhà phát triển dựa vào phát triển web và không hút các tập lệnh phức tạp như hầu hết các tập lệnh khác thư viện và công cụ làm.
Ebrahim Byagowi

Câu trả lời:


551

Quan trọng: Xin lưu ý rằng câu trả lời này đã được viết vào năm 2009 và nó có thể không phải là giải pháp hiệu quả nhất về chi phí hiện nay vào năm 2019. Các lựa chọn thay thế trực tuyến ngày nay tốt hơn so với trước đây.

Dưới đây là một số dịch vụ trực tuyến mà bạn có thể sử dụng:


Hãy nhìn vào PrinceXML .

Đây chắc chắn là trình chuyển đổi HTML / CSS sang PDF tốt nhất hiện có, mặc dù nó không miễn phí (Nhưng này, chương trình của bạn cũng có thể không miễn phí, vì vậy nếu nó giúp bạn tiết kiệm 10 giờ làm việc, bạn sẽ không có nhà (vì bạn cũng cần tính đến việc các giải pháp thay thế sẽ yêu cầu bạn thiết lập một máy chủ chuyên dụng với phần mềm phù hợp)

Ồ vâng, tôi đã đề cập rằng đây là giải pháp HTML2PDF đầu tiên (và có lẽ là duy nhất) có đầy đủ ACID2 ?

Mẫu PrinceXML


16
Công ty của tôi đã viết một dịch vụ web được xây dựng xung quanh Prince. Chi phí trả trước rẻ hơn đáng kể và có thể sử dụng mà không cần cài đặt bất cứ thứ gì: docraptor.com
Joel Meador

6
Tôi cũng đã sử dụng DocRaptor. Cách tuyệt vời để có được những lợi ích của Prince mà không phải trả tiền cho giấy phép đắt tiền. Chúc mừng một sản phẩm tuyệt vời, Joel.
Nate365

22
Cách quá đắt. WKHTMLTOPDF (xem câu trả lời khác) là miễn phí, thực hiện công việc và sử dụng webkit thật tuyệt vời.
thomallen

1
có dịch vụ Saas có chất lượng tương đương hoặc tốt hơn với một phần nhỏ của giá - xem htm2pdf.co.uk
user1914292

5
Nếu bạn có quyền truy cập dòng lệnh và KHÔNG muốn trả $ 3500, PhantomJS với tập lệnh này: github.com/ariya/ph Phantomjs/blob/master/examples/rasterize.js có thể là một giải pháp - đó là cách miễn phí và dễ dàng!
chjortlund

666

Có một cái nhìn vào wkhtmltopdf. Nó là nguồn mở, dựa trên webkit và miễn phí.

Chúng tôi đã viết một hướng dẫn nhỏ ở đây .

EDIT (2017):

Nếu hôm nay là để xây dựng một cái gì đó, tôi sẽ không đi con đường đó nữa.
Nhưng sẽ sử dụng http://pdfkit.org/ thay thế.
Có lẽ tước bỏ tất cả các phụ thuộc nodejs của nó, để chạy trong trình duyệt.


10
Điều này hoạt động trên IMO tiền đề tốt nhất. Boostrap chuyển đổi một trình kết xuất hiện có thay vì viết từ đầu - không phải là một nhiệm vụ tầm thường. Hơn nữa, Webkit được viết bằng C ++ và do đó nhanh hơn và ít hơn rất nhiều tài nguyên so với triển khai dựa trên PHP.
Koobz

3
Chúng tôi đã gặp sự cố lớn khi cố gắng để điều này hiển thị phông chữ đúng cho máy chủ CentOS. Sau nhiều tuần lộn xộn theo nghĩa đen, có vẻ như lựa chọn duy nhất là không sử dụng CentOS.
Abhi Beckert

1
CẢNH BÁO! Nếu bạn sử dụng wkhtmltopdf (ít nhất là trên hệ thống của tôi, XAMPP trên Windows 7 64-bit), trong mọi trường hợp tôi đã thử, hình ảnh .gif không xuất hiện trong tệp PDF. Tôi đã thử một số cách giải quyết được đề xuất ở nhiều nơi, chẳng hạn như "chiều rộng" và "chiều cao" và viết URI theo các quy ước khác nhau. Không có gì tôi cố gắng làm cho .gif xuất hiện (đặc biệt, thậm chí không phải là đề xuất "chiều rộng" và "chiều cao", mà tôi đã thử cả sử dụng kiểu nội tuyến và sử dụng các thuộc tính HTML cổ, thô "chiều rộng" và "chiều cao"). Tuy nhiên, việc hoán đổi hình ảnh thành .jpg đã hoạt động ngay lần thử đầu tiên.
Dan Nissenbaum

6
Sự trừu tượng này khá hay mặc dù mikehaertl.github.io/phpwkhtmltopdf
saada

1
Các dịch vụ thương mại quá đắt đối với chúng tôi, vì vậy chúng tôi đã triển khai WKHTMLTOPDF dưới dạng dịch vụ đám mây miễn phí html2pdfrocket.com cho bất kỳ ai sử dụng và sau đó tự sử dụng nó cho khách hàng của mình. Chúng tôi đã làm theo cách đó để khách hàng của chúng tôi không phải cài đặt exe trên máy chủ của họ, v.v. và hoạt động đa nền tảng. Tôi chắc chắn đánh giá WKHTMLTOPDF nếu bạn đang xây dựng dịch vụ của riêng mình.
Eagle779

150

Sau một số điều tra và kéo tóc nói chung, giải pháp có vẻ là HTML2PDF . DOMPDF đã làm một công việc tồi tệ với các bảng, đường viền và thậm chí bố cục phức tạp vừa phải và htmldoc có vẻ hợp lý nhưng gần như hoàn toàn không biết CSS và tôi không muốn quay lại làm bố cục HTML mà không cần CSS cho chương trình đó.

HTML2PDF trông có vẻ hứa hẹn nhất nhưng tôi vẫn gặp phải lỗi lạ này về các đối số tham chiếu null đối với node_type. Cuối cùng tôi đã tìm thấy giải pháp cho việc này. Về cơ bản, PHP 5.1.x hoạt động tốt với regex thay thế (preg numplace_ *) trên các chuỗi có kích thước bất kỳ. PHP 5.2.1 đã giới thiệu một lệnh cấu hình php.ini có tên là pcre.backtrack_limit . Những gì tham số cấu hình này làm là giới hạn độ dài chuỗi cho phép thực hiện khớp. Tại sao điều này được giới thiệu tôi không biết. Giá trị mặc định được chọn là 100.000. Tại sao giá trị thấp như vậy? Một lần nữa, không có ý tưởng.

Một lỗi đã được đưa ra so với PHP 5.2.1 cho việc này , nó vẫn mở gần hai năm sau đó .

Điều kinh khủng về điều này là khi vượt quá giới hạn, sự thay thế chỉ âm thầm thất bại . Ít nhất nếu một lỗi đã được đưa ra và ghi lại, bạn sẽ có một số dấu hiệu về những gì đã xảy ra, tại sao và những gì cần thay đổi để sửa lỗi. Nhưng không.

Vì vậy, tôi có một tệp HTML 70k để chuyển thành PDF. Nó yêu cầu các cài đặt php.ini sau:

  • pcre.backtrack_limit = 2000000; # có thể nhiều hơn tôi cần nhưng không sao
  • bộ nhớ_limit = 1024M; # có, một gigabyte ; và
  • max_execut_time = 600; # có, 10 phút .

Bây giờ người đọc sắc sảo có thể nhận thấy rằng tệp HTML của tôi nhỏ hơn 100k. Lý do duy nhất tôi có thể đoán là tại sao tôi gặp phải vấn đề này là html2pdf thực hiện chuyển đổi thành xhtml như một phần của quy trình. Có lẽ điều đó đã đưa tôi qua (mặc dù gần 50% phình to có vẻ kỳ lạ). Dù thế nào đi nữa, những điều trên đã làm việc.

Bây giờ, html2pdf là một con heo tài nguyên. Tệp 70k của tôi mất khoảng 5 phút và ít nhất 500-600M RAM để tạo tệp PDF 35 trang. Không đủ nhanh (cho đến nay) để tải xuống trong thời gian thực một cách đáng tiếc và việc sử dụng bộ nhớ đặt tỷ lệ sử dụng bộ nhớ theo thứ tự 1000 đến 1 (600M RAM cho một tệp 70k), điều này hoàn toàn vô lý.

Thật không may, đó là điều tốt nhất tôi nghĩ ra.


1
@cletus bạn có thể vui lòng cho tôi biết về phiên bản ổn định của HTML2PDF. Ví dụ liên kết ở trên không được dùng nữa
Ripa Saha

Để biết phiên bản mới nhất, hãy xem github.com/spipu/html2pdf
Luke Wenke

1
Lỗi đánh máy trở nên nghiệt ngã hơn: Tỷ lệ sử dụng bộ nhớ theo thứ tự từ 10.000 đến 1 lol
MickLH

Hoạt động cũng tệ như mPDF ... nhanh hơn, nhưng không chính xác ... và chuyển đổi phông chữ TTF là vô cùng đau đớn ... họ thậm chí còn có thư viện độc lập "tc-lib-pdf-font" chỉ để tạo phông chữ
Martin Zvarík

125

Tại sao bạn không thử mPDF phiên bản 2.0 ? Tôi đã sử dụng nó để tạo PDF một tài liệu. Nó hoạt động tốt.

Trong khi đó mPDF ở phiên bản 5.7 và nó được duy trì tích cực, trái ngược với HTML2PS / HTML2PDF

Nhưng hãy nhớ rằng, tài liệu có thể thực sự khó xử lý. Ví dụ: hãy xem trang này: https://mpdf.github.io/ .

Các tác vụ rất cơ bản xung quanh html đến pdf, có thể được thực hiện với thư viện này, nhưng các tác vụ phức tạp hơn sẽ mất một chút thời gian để đọc và "hiểu" tài liệu.


1
Tôi đã thử một loạt các đề nghị ở đây. Cho đến nay, cái này đã được tải lên và hoạt động ngay lập tức mà không gặp rắc rối nào và các tài liệu thực sự tuyệt vời so với phần còn lại. Hướng dẫn sử dụng được viết rõ ràng.
Smith Smithy

mPDF mang đến cho tôi một số rắc rối nghiêm trọng khi POST các thẻ html với nền hình ảnh hoặc các thẻ từ cơ sở dữ liệu:mPDF error: IMAGE Error (http://www.example.com/folder/image.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate
Stefan

Phiên bản 6.0 hoạt động đúng như mong đợi: bao gồm nó (hoặc trong một khung, tải nó) ngay lập tức, điền vào công cụ của bạn, xuất nó theo cách này hay cách khác ... Đó là nó!
toesslab 5/2/2015

Vâng MPDF đang hoạt động tốt, đúng! Nhưng mã và tài liệu không nhất quán - nó thực sự khó thực hiện một nhiệm vụ phức tạp hơn, ví dụ như tạo một lá thư liên quan đến tiêu chuẩn din.
Qullbrune 13/03/2015

Khẳng định rằng nó chậm hơn rất nhiều so với html2fpdf. Nhưng đối với nội dung cơ bản, tôi nghĩ rằng nó rất nhanh (hóa đơn, báo cáo, v.v.). Điểm cộng rất lớn cho mPDF là hầu như không có bất kỳ yêu cầu mở rộng PHP nào (hoạt động vượt trội trên dịch vụ lưu trữ được chia sẻ)
Joao

70

1) sử dụng MPDF !

a) trích xuất trong yourfolder

b) tạo file.php trong yourfoldervà chèn mã đó:

<?php
include('../mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output();   exit;
 ?>

c) mở file.php từ trình duyệt của bạn




2) Sử dụng pdfToHtml !

1) giải nén pdftohtml.exe vào thư mục gốc của bạn:

2) bên trong thư mục đó, trong tệp anyfile.php , đặt mã này (giả sử, cũng có một ví dụ nguồn.pdf ):

<?php
$source="example.pdf";
$output_fold="FinalFolder";

    if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
$result= passthru("pdftohtml $source $output_fold/new_filename",$log);
//var_dump($result); var_dump($log);
?>

3) nhập FinalFolder và sẽ có các tệp được chuyển đổi (bao nhiêu trang, như PDF nguồn có ..)


Tôi sẽ thử GrabzIt API của họ hỗ trợ CSS, JavaScript và hầu hết các loại tài nguyên khác. Nó chỉ cần được tham chiếu với URL tuyệt đối hoặc được đặt nội tuyến và được bao gồm trong HTML được gửi đến dịch vụ. Dùng thử tại đây: Grabz.it/html-to-pdf-image-api.aspx

GrabzIt không miễn phí
Chatoxz


32

Chỉ để xử lý chủ đề, tôi đã thử DOMPDF và nó hoạt động hoàn hảo. Tôi đã sử dụng DIVvà các yếu tố cấp khối khác để định vị mọi thứ, tôi giữ nó nghiêm ngặt CSS 2.1 và nó đã chơi rất độc đáo.


31

Tôi đề nghị DocRaptor (sử dụng PrinceXMLlàm "công cụ")


Thật không may, không thể sử dụng nếu bạn muốn tạo các tệp PDF lớn với nhiều hình ảnh. Tôi nghĩ rằng có một khoảng thời gian 60 giây cho các yêu cầu và nếu Docraptor cần tải xuống rất nhiều tệp thì điều này sẽ bị vượt quá, và sẽ không có tệp nào được thực hiện.
Vilmus

1
Vấn đề này Vilmus đã đề cập đã được khắc phục.
illbzo1

30

Nó đã được đề cập, nhưng tôi chỉ muốn xác nhận rằng mpdf là trình chuyển đổi HTML sang pdf dễ dàng nhất, mạnh mẽ nhất và miễn phí nhất hiện có. Bầu trời thực sự là giới hạn. Bạn thậm chí có thể tạo pdf của dữ liệu động, do người dùng tạo.

Chẳng hạn, một khách hàng muốn có một hệ thống CMS để anh ta có thể cập nhật danh sách nhạc của bản nhạc anh ta chơi tại câu lạc bộ của mình. Điều đó không có vấn đề gì, nhưng anh ấy cũng muốn người dùng có thể tải xuống .pdf của danh sách phát, và vì vậy bản pdf có thể tải xuống này cũng phải được cập nhật bởi các cms. Nhờ mpdf, với một số vòng lặp đơn giản và các biến xen kẽ, tôi có thể làm điều đó. Một cái gì đó mà tôi nghĩ rằng sẽ mất tôi hàng tuần theo nghĩa đen đã đưa tôi vài phút.

Bài viết tuyệt vời đã giúp tôi bắt đầu.


7
Một bản PDF của danh sách phát. Chúa đã giúp tôi.
Henrik Erlandsson

29

Tin tốt! Hài hước !!

Snappy là một thư viện PHP5 mã nguồn mở rất dễ dàng , cho phép tạo hình thu nhỏ, ảnh chụp nhanh hoặc tạo PDF từ một url hoặc trang html. Và ... nó sử dụng wkhtmltopdf dựa trên webkit tuyệt vời

Thưởng thức! ^ _ ^


1
Tôi đã xây dựng API HTTP sử dụng Snappy (dựa trên wkhtmltopdf). Bạn có thể chuyển một URL và chuyển đổi trang web từ HTML sang PDF: github.com/Dellos7/dhtml2pdf
David López

26

Chà, nếu bạn muốn tìm một thư viện chuyển đổi XHTML + CSS sang PDF hoàn hảo, hãy quên nó đi. Nó là xa có thể. Bởi vì nó giống như tìm một trình duyệt hoàn hảo (công cụ kết xuất XHTML + CSS). Chúng ta có một cái không? IE hay FF?

Tôi đã có một số thành công với DOMPDF. Vấn đề là bạn phải sửa đổi mã HTML + CSS của mình để phù hợp với cách thư viện hoạt động. Ngoài ra, tôi có kết quả khá tốt.

Xem bên dưới:

HTML gốc

Chuyển đổi HTML sang PDF


25

Các html2pdf và HTML2PS mà ban đầu được đề cập trong bài khai mạc đã nói về một gói 2009 với này liên kết

Nhưng có một HTML2PDF tốt hơn

Nó dựa trên TCPDF mặc dù nó là một phần bằng tiếng Pháp.

Bạn có thể có các tiêu đề bảng hoặc chân trang lặp lại trên các trang và có số trang và tổng số trang. Xem ví dụ của nó . Tôi đã sử dụng nó trong hơn ba năm và giới thiệu nó.


1
Tại sao điều này không ở trên đầu? Nó hoạt động mà không có bất kỳ phụ thuộc bổ sung nào, và đủ tốt cho hầu hết các ứng dụng của mọi người mà không phải chi $ 3800!
thoái hóa

22

Tôi đang sử dụng fpdf để tạo tệp PDF bằng PHP. Nó hoạt động tốt cho tôi cho đến nay để tạo ra đầu ra đơn giản.


21

Có một hướng dẫn về devzone của Zend về việc tạo pdf từ php ( phần 1 , phần 2 ) mà không cần bất kỳ thư viện bên ngoài nào. Tôi chưa bao giờ thực hiện loại giải pháp này, nhưng vì tất cả đều là php, nên bạn có thể thấy nó linh hoạt hơn khi thực hiện và gỡ lỗi.



Vâng, nhưng điều đó không chuyển đổi HTML ... đó là thế hệ PDF thô
Martin Zvarík

16

Hãy thử lấy bản dựng dompdf hàng đêm mới nhất - Tôi đang sử dụng một phiên bản cũ hơn là một tài nguyên khủng khiếp và mất mãi mãi để hiển thị pdf của tôi. Sau khi lấy một đêm từ đây .

Chỉ mất vài giây để tạo tệp PDF - VÀ nó cũng được hiển thị độc đáo như với PrinceXML / Docraptor . Có vẻ như họ đã tối ưu hóa nghiêm túc mã dompdf kể từ lần cuối tôi sử dụng nó!


dompdf thực sự là một lựa chọn tuyệt vời. Tôi đã sử dụng hai lần và nó rất dễ dàng. Tôi sẽ khuyên bạn nên thử dompdf. Đây là đường dẫn cho repo github chính thức: github.com/dompdf/dompdf
Rituparna sonowal

16

Darryl Hein đề cập ở trên về TCPDF có thể là một ý tưởng tuyệt vời. Mã của Nicola Asuni khá tiện dụng và mạnh mẽ. Kẻ giết người duy nhất là nếu bạn từng có kế hoạch hợp nhất các tệp PDF với tệp PDF được tạo của mình thì nó không có các tính năng đó. Bạn sẽ phải tạo tệp PDF và sau đó hợp nhất nó bằng cách sử dụng một cái gì đó như PDFTK của Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).


13

Về chi phí, trong nhiều trường hợp, sử dụng dịch vụ web (API) có thể là cách tiếp cận hợp lý hơn. Ngoài ra, bằng cách thuê ngoài quy trình này, bạn giải phóng cơ sở hạ tầng / phụ trợ của riêng mình và - miễn là bạn đang sử dụng dịch vụ có uy tín - đảm bảo khả năng tương thích với việc điều chỉnh các tiêu chuẩn web, thời gian hoạt động, thời gian xử lý ngắn và phân phối nội dung nhanh.

Tôi đã thực hiện một số nghiên cứu về hầu hết các dịch vụ web hiện có trên thị trường, vui lòng tìm bên dưới các API mà tôi cảm thấy đáng được đề cập trên chuỗi này, theo thứ tự dựa trên tỷ lệ giá / giá trị. Tất cả chúng đều cung cấp các lớp và gói PHP được soạn sẵn.

  1. pdflayer.com - Chi phí: $ - Chất lượng:
  2. docraptor.com - Chi phí: $$$ - Chất lượng: ☆ ♥♥♥♥♥
  3. pdfcrowd.com - Chi phí: $$ - Chất lượng:

Chất lượng:

Có công cụ chất lượng cao PrinceXMLlàm xương sống, DocRaptor rõ ràng cung cấp chất lượng PDF tốt nhất, trả lại các tài liệu PDF được đánh bóng cao và được chuyển đổi tốt. Tuy nhiên, dịch vụ API pdflayer khá gần ở đây. Pdfcrowd không nhất thiết phải ghi điểm với chất lượng, nhưng với tốc độ xử lý.

Giá cả:

pdflayer.com - Như đã chỉ ra ở trên, tùy chọn hiệu quả nhất về chi phí ở đây là pdflayer.com, cung cấp gói thuê bao hoàn toàn miễn phí cho 100 tệp PDF hàng tháng và đăng ký cao cấp trong khoảng từ 9,99 đến $ 119,99. Giá cho 10.000 tài liệu PDF hàng tháng là $ 39,99.

docraptor.com - Cung cấp thời gian dùng thử miễn phí 7 ngày. Gói thuê bao cao cấp dao động từ $ 15- $ 2250. Giá cho 10.000 tài liệu PDF hàng tháng là ~ $ 300,00.

pdfcrowd.com - Cung cấp 100 PDF một lần miễn phí. Gói thuê bao cao cấp dao động từ $ 9- $ 89. Giá cho 10.000 tài liệu PDF hàng tháng là ~ $ 49,00.

Tôi đã sử dụng cả ba trong số chúng và văn bản này được cho là để giúp bất kỳ ai quyết định mà không phải trả tiền cho tất cả chúng. Văn bản này đã không được viết để chứng thực bất kỳ một sản phẩm nào và tôi không có liên kết với bất kỳ sản phẩm nào.


Cảm ơn cho các chia sẻ. Tôi đã điều tra tất cả các lựa chọn cả ngày và đã tập trung nhiều hơn vào các lib miễn phí hoặc mua lib. Câu trả lời của bạn giúp tôi thnik một lần nữa. Tôi thnik cho doanh nghiệp nhỏ đó là cách hiệu quả về chi phí và cách dễ nhất để đi với các dịch vụ web. Đối với pdflayer.com; ít hơn $ 100 / năm phải mất 20 hoặc 30 năm làm ăn có lãi, nhưng tôi dont thnik chúng tôi sẽ để lại trong cùng một thế giới 20 năm sau :)
ý chí tự do

12

Nếu bạn có quyền truy cập vào dòng lệnh, có thể sử dụng PhantomJS để tạo PDFtừ URL(từ xa hoặc cục bộ).

Nó hoạt động thực sự tốt, và là một giải pháp miễn phí.

Hãy xem kịch bản ví dụ này được thực hiện cho vấn đề chính xác này.


nhưng bạn có thể gặp một số vấn đề với phông chữ (webfonts)
Mihai Crăiță

11

Câu hỏi này đã khá cũ rồi, nhưng chưa thấy ai nhắc đến CutyCapt nên tôi sẽ :)

CutyCapt

CutyCapt là một tiện ích dòng lệnh đa nền tảng nhỏ để thu thập kết xuất trang web của WebKit thành nhiều định dạng vector và bitmap, bao gồm SVG, PDF, PS, PNG, JPEG, TIFF, GIF và BMP


11

Tôi khuyên dùng TCPDF hoặc DOMPDF, theo thứ tự đó.


9

Tôi không nghĩ rằng một lớp php sẽ là tốt nhất để kết xuất một trang xHtml với css.

Điều gì xảy ra khi một quy tắc css mới xuất hiện? (sớm css 3.0 ...)

Cách tốt nhất để hiển thị một trang html là, một trình duyệt. Firefox 3.0 thực sự có thể 'in' ở định dạng pdf, torisugary đã phát triển một phần mở rộng (in dòng lệnh) để sử dụng nó. Ở đây bạn sẽ tìm thấy nó.

Dù sao, vẫn còn nhiều vấn đề runninr firefox giống như một trình chuyển đổi pdf ...

Hiện tại, tôi nghĩ rằng wkhtmltopdf là tốt nhất (đó là cái được sử dụng bởi trình duyệt safari), nhanh, nhanh, tuyệt vời. Vâng, mã nguồn mở cũng ... Hãy xem nó


PHP rất hữu ích nếu bạn muốn xuất một số loại tài liệu chính thức như biên nhận cho người dùng và bạn có thể sử dụng CSS để làm cho nó trông đẹp hơn.
Luke Wenke

9

Tôi đã phát triển API công khai để xây dựng các tệp PDF từ các trang web. Nó có một lớp máy khách PHP đẹp giúp nó siêu dễ sử dụng. Nó sử dụng wkhtmltopdf để hiển thị PDF trên đám mây.

Không cần bất cứ điều gì đặc biệt trong HTML. Không cần URLS tuyệt đối trong liên kết hình ảnh / css / js. Hoạt động trên localhost (máy dev) quá.

Hiện tại dịch vụ này có các điểm cuối ở 4 khu vực Azure: Đông Mỹ, Tây Mỹ, Bắc EU, Đông Nam Á.

Thật nhanh vì nó sử dụng một giao thức độc quyền để gửi nội dung trang web tới API để chuyển đổi sang PDF.

Nó đáng tin cậy vì tất cả các điểm cuối được cân bằng tải.

Tài khoản miễn phí có sẵn để thử nghiệm hoặc sử dụng thấp. Chi tiết trên trang web:

https://rotativahq.com


8

Có lẽ bạn có thể thử và sử dụng Tidy trước khi đưa tệp cho trình chuyển đổi. Nếu một trong các trình kết xuất bị kẹt trong một số vấn đề về HTML (như thẻ không được tiết lộ), nó có thể giúp ích cho nó.


Có một điểm hợp lệ nhưng tôi đã nghĩ về điều này rồi. Không có thẻ chưa từng có hoặc không có tiêu chuẩn trong HTML của tôi.
cletus

7

Kết xuất tốt không có nghĩa gì cả. Liệu nó có xác nhận?

Tất cả các trình duyệt làm hết sức có thể để chỉ hiển thị một cái gì đó trên màn hình, bất kể đầu vào xấu như thế nào. Và tất nhiên họ không làm điều tương tự. Nếu bạn muốn kết xuất giống như FireFox, bạn có thể sử dụng công cụ kết xuất của nó. Có máy phát điện pdf cho nó. Đó là một công việc khủng khiếp, mặc dù.


7

Mặc dù đã có nhiều giải pháp được đưa ra, tôi khuyên bạn nên hai cách sau:

  1. HTM2PDF - cung cấp API để chuyển đổi HTML sang PDF và cũng có SDK PHP, điều này giúp cho việc triển khai trong PHP rất dễ dàng; Nó cung cấp nhiều lựa chọn địa điểm máy chủ ở Châu Âu, Châu Á và Hoa Kỳ
  2. PDFmyURL - cũng cung cấp API cũng chuyển URL và HTML sang PDF, với chức năng gần giống như HTM2PDF, nhưng hoạt động trên một cảnh quan cân bằng tải và đã tồn tại lâu hơn một chút

Điều khác biệt về hai API này từ tất cả các giải pháp đã đề cập trước đó là - bên cạnh việc chuyển đổi HTML sang PDF bằng CSS và JavaScript - nó còn cung cấp quản lý quyền PDF, hình chìm mờ và mã hóa. Do đó, đây là một giải pháp tất cả trong một cho những ai muốn chạy xuống đất.

Tuyên bố miễn trừ trách nhiệm: Tôi làm việc cho Kaiomi, một công ty vận hành cả hai trang web này.


Tôi sẽ không muốn dựa vào một dịch vụ khi nó được rao bán . Với thực tế là nó đã không được bán trong cuộc đấu giá đó, tôi chỉ có thể cho rằng nó sẽ được bán trong tương lai gần?
Robin van Baalen

thực sự công ty của tôi đã mua nó một thời gian sau cuộc đấu giá ....
user1914292

Trong trường hợp đó, tôi cho rằng không có gì phải lo lắng.
Robin van Baalen

5

Việc chuyển đổi HTML sang PDF có thực sự cần xảy ra phía máy chủ bằng PHP không?

Tôi vừa bắt gặp jsPDF , một giải pháp phía máy khách sử dụng HTML5 / JavaScript. Mã được MIT cấp phép cũng có trên GitHub .


đối với tôi, thư viện rất hạn chế
YXN

5

TCPDF hoạt động tốt, không phụ thuộc, miễn phí và liên tục bị lỗi. Nó có tốc độ hợp lý nếu nội dung HTML / CSS được cung cấp được hình thành tốt. Tôi thường tạo từ 50 - 300 kB đầu vào HTML (bao gồm CSS) và nhận đầu ra PDF trong vòng 1-3 giây với 10 - 15 trang PDF.

Tôi thực sự khuyên bạn nên sử dụng thư viện gọn gàng dưới dạng HTML khá định dạng trước khi gửi bất cứ điều gì đến TCPDF.


4

Tôi đã thử rất nhiều thư viện khác nhau cho PHP. Tất cả các danh sách tôi đã thử. Theo tôi thư viện TCPDF là hiệu năng / khả năng sử dụng tốt nhất. Nó rất đơn giản để cài đặt và sử dụng, cũng có hiệu năng tốt trong ứng dụng vừa. Nếu bạn cần hiệu suất cao và tài liệu PDF rất lớn, hãy sử dụng mô-đun Zend_PDF , nhưng sẵn sàng mã hóa cứng!


Zend PDF không thể chuyển đổi từ HTML
Martin Zvarík

3

API web

Nếu có những người luôn tìm kiếm loại công cụ này, có một trang web miễn phí cho phép bạn chuyển đổi mã & trang html sang pdf. Ngoài ra còn có một api (rất nhỏ) cho phép bạn lấy tệp pdf từ url.

Kiểm tra nó ở đây


2

không phải PHP , mà là một thư viện Java , thực hiện điều này:

Flying Saucer lấy XML hoặc XHTML và áp dụng các bảng định kiểu tuân thủ CSS 2.1 cho nó, để hiển thị thành PDF

Nó có thể được sử dụng từ PHP thông qua system()hoặc một cuộc gọi tương tự. Mặc dù nó đòi hỏi sự hình thành tốt của XMLinput .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.