Tôi nhận ra rằng đây là một câu hỏi cũ, nhưng vì đây là thư viện duy nhất tôi thấy sẽ in từ HTML sang PDF và giữ lại hình ảnh và màu nền, tôi sử dụng dấu nhắc lệnh Windows. Tôi đã từng sử dụng kiến trúc sư PDF, nhưng nó không bao giờ có thể xử lý các màu nền.
Khi bạn cài đặt wkhtmltopdf, nó sẽ đi vào các tệp C: \ Program \ wkhtmltopdf \ hoặc C: \ Files Program [x86] \ wkhtmltopdf.
Giả sử rằng bạn có một môi trường PHP cục bộ trong đó //localhost/
được thiết lập làm điểm khởi đầu của bạn. Ngoài ra, hãy nói rằng bạn có một tệp ở đó có tên là html_invoice.html và bạn muốn in nó vào một tệp có tên Dev_invoice_200.pdf và đặt nó vào thư mục hóa đơn của bạn bên trong máy chủ web XAMPP. Để làm điều đó, bạn sẽ kích hoạt dấu nhắc lệnh Windows [nghĩa là bắt đầu -> Tất cả các chương trình -> Phụ kiện -> Dấu nhắc lệnh hoặc bắt đầu -> Chạy -> CMD] và nhập:
c:\Program Files\wkhtmltopdf\bin\wkhtmltopdf //localhost/html_invoice.html c:\xampp\htdocs\invoices\dev_invoice_200.pdf
Điều này sẽ tạo PDF ở đúng nơi.
Vì chúng tôi đang sử dụng dấu nhắc lệnh Windows, thực sự không có lý do gì để sử dụng PHP. Thay vào đó, chúng ta có thể sử dụng một tệp hàng loạt và nếu chúng ta cần tự động hóa nó, chúng ta có thể sử dụng Trình lập lịch tác vụ Windows để gọi tệp hàng loạt [Bắt đầu -> Tất cả các chương trình -> Phụ kiện -> Công cụ hệ thống -> Trình lập lịch tác vụ].
Nếu bạn chưa bao giờ thực hiện các tệp hàng loạt, bạn chỉ cần gõ các lệnh bạn muốn thực hiện vào một tệp văn bản đơn giản và lưu nó bằng tiện ích mở rộng .bat.
Vì vậy, hãy nói rằng chúng tôi muốn luôn luôn in tệp html_invoice.html tại cùng một điểm vào thư mục hóa đơn với tên của dev_invoice.pdf và chúng tôi sẽ thay đổi tên sau khi nó đến đó. Bạn chỉ cần đặt dòng trên trừ đi "_200" vào một tệp văn bản và lưu nó dưới dạng .bat và sau đó nhấp đúp vào nó trong Windows hoặc chạy nó thông qua Trình lập lịch tác vụ.
Nó là gì?
wkhtmltopdf
và wkhtmltoimage
là các công cụ dòng lệnh nguồn mở [LGPLV3] để kết xuất HTML thành PDF và các định dạng hình ảnh khác nhau bằng cách sử dụng công cụ kết xuất Qt WebKit. Chúng chạy hoàn toàn "không đầu" và không yêu cầu dịch vụ hiển thị hoặc hiển thị.
Ngoài ra còn có một thư viện C, nếu bạn thích loại điều đó.
Làm thế nào để tôi sử dụng nó?
- Tải xuống một nhị phân được biên dịch trước hoặc xây dựng từ nguồn
- Tạo tài liệu HTML của bạn mà bạn muốn biến thành PDF [hoặc hình ảnh]
Chạy tài liệu HTML của bạn thông qua công cụ. Ví dụ: nếu tôi thực sự thích điều trị mà Google đã thực hiện với logo của họ ngày hôm nay và muốn nắm bắt nó mãi mãi dưới dạng PDF:
For example, if I really like the treatment Google has done to their logo today and want to capture it forever as a PDF:wkhtmltopdf //google.com google.pdf
Tùy chọn bổ sung
Thật tuyệt, tôi luôn muốn biến trang chủ của Google thành PDF, nhưng tôi cũng muốn có một bảng nội dung.
Có rất nhiều tùy chọn dòng lệnh. Kiểm tra hướng dẫn sử dụng WKHTMLTOPDF tự động.
Nhận Hardcore
Các công cụ dòng lệnh là tuyệt vời, nhưng tôi muốn một thư viện C.
Không vấn đề gì. Kiểm tra tài liệu thư viện.
Ví dụ trong thế giới thực?
Giống như chúng tôi đã nói, nếu bạn thực sự thích trang chủ của Google ngay hôm nay và muốn lưu nó dưới dạng PDF, bạn có thể sử dụng wkhtmltopdf cho điều đó.
Nghiêm túc mà nói, bạn có thể sử dụng nó để tạo hóa đơn, tạo thiệp sinh nhật hoặc tất cả các loại điều thú vị khác. Chỉ cần sử dụng trí tưởng tượng của bạn!
Tất cả các bản tải xuống hiện được lưu trữ thông qua các bản phát hành GitHub, vì vậy bạn có thể duyệt để tải xuống cụ thể hoặc sử dụng các liên kết bên dưới.
Không sử dụng wkhtmltopdf với bất kỳ HTML không đáng tin cậy nào-hãy chắc chắn vệ sinh bất kỳ HTML/JS do người dùng cung cấp, nếu không nó có thể dẫn đến việc tiếp quản hoàn toàn máy chủ mà nó đang chạy! Vui lòng đọc trạng thái dự án cho các chi tiết Gory. – be sure to sanitize any user-supplied HTML/JS, otherwise it can lead to complete takeover of the server it is running on! Please read the project status for the gory details.
Ổn định
Sê -ri ổn định hiện tại là 0,12,6, được phát hành vào ngày 11 tháng 6 năm 2020 - xem các thay đổi kể từ 0,12,5.0.12.6, which was released on June 11, 2020 – see changes since 0.12.5.
các cửa sổ | Trình cài đặt [Vista trở lên] | 64 bit | 32 bit | & nbsp; | ||
Lưu trữ 7Z [XP/2003 trở lên] | 64 bit | 32 bit | & nbsp; | |||
Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | 64 bit | & nbsp; | |||
Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | Trình cài đặt [10,7 trở lên] | Debian | 11 [bullseye ] | AMD64 | i386 |
ARM64 | Trình cài đặt [10,7 trở lên] | Debian | 11 [bullseye ] | AMD64 | i386 | |
ARM64 | Trình cài đặt [10,7 trở lên] | Debian | 11 [bullseye ] | & nbsp; | i386 | |
ARM64 | PPC64EL | Trình cài đặt [10,7 trở lên] | & nbsp; | 11 [bullseye ] | AMD64 | & nbsp; |
Lưu trữ 7Z [XP/2003 trở lên] | Trình cài đặt [10,7 trở lên] | & nbsp; | 11 [bullseye ] | AMD64 | & nbsp; | |
Lưu trữ 7Z [XP/2003 trở lên] | Trình cài đặt [10,7 trở lên] | Debian | 11 [bullseye ] | AMD64 | & nbsp; | |
Lưu trữ 7Z [XP/2003 trở lên] | Trình cài đặt [10,7 trở lên] | Debian | 11 [bullseye ] | & nbsp; | ||
Lưu trữ 7Z [XP/2003 trở lên] | 9 | hệ điều hành Mac | & nbsp; | Lưu trữ 7Z [XP/2003 trở lên] | & nbsp; | |
8 | hệ điều hành Mac | & nbsp; | Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | & nbsp; | |
Lưu trữ 7Z [XP/2003 trở lên] | 7 | hệ điều hành Mac | Trình cài đặt [10,7 trở lên] | Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | & nbsp; |
6 | hệ điều hành Mac | Trình cài đặt [10,7 trở lên] | & nbsp; | |||
Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | hệ điều hành Mac | & nbsp; | Lưu trữ 7Z [XP/2003 trở lên] | & nbsp; | |
Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | & nbsp; | ||||
Lưu trữ 7Z [XP/2003 trở lên] | 15 | hệ điều hành Mac | & nbsp; | Lưu trữ 7Z [XP/2003 trở lên] | hệ điều hành Mac | & nbsp; |
Lưu trữ 7Z [XP/2003 trở lên] | 20200705 | hệ điều hành Mac | & nbsp; |
Lưu trữ 7Z [XP/2003 trở lên]
hệ điều hành Mac
Trình cài đặt [10,7 trở lên]will not be accepted against the following, which are considered obsolete. It is recommended to use the latest stable release instead, and report an issue if there is a regression from a previous release.
2018-06-11 | 0.12.5 |
2019-04-30 | 0.12.1.4 [chỉ có Linux] |
2016-11-22 | 0.12.4 |
2016-03-02 | 0.12.3.2 [chỉ có Windows] |
2016-01-30 | 0.12.3.1 [chỉ có Windows] |
2016-01-20 | 0.12.3 |
2015-07-12 | 0.12.2.4 [chỉ có Windows] |
2015-06-20 | 0.12.2.3 [chỉ có Windows] |
2015-04-06 | 0.12.2.2 [chỉ có Windows] |
2015-01-19 | 0.12.2.1 |
2015-01-09 | 0.12.2 |
2014-06-26 | 0.12.1 |
2014-02-06 | 0.12.0 |
Nếu bạn cần các phiên bản cũ hơn
$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2
bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
4, bạn có thể xem các bản tải xuống lỗi thời.Câu hỏi thường gặp
Tại sao bạn có các bản dựng tĩnh với QT được vá?
Câu hỏi hay. Một số tính năng yêu cầu bạn sử dụng QT được vá, bởi vì những điều đó chưa được thượng nguồn - vui lòng đọc trạng thái dự án để giải thích dài hơn.
Hầu hết các bản phân phối Linux [khá dễ hiểu] sẽ thích dự án này ngược dòng các bản vá và chọn biên dịch mà không cần các tính năng đó. Điều này dẫn đến hành vi khá khác nhau - bạn có được một công cụ web sau này, nhưng hành vi có thể thay đổi từ phân phối sang phân phối.
Tại sao không có bản dựng chung chung của Linux Linux [được cung cấp trước đó]?
Mặc dù các bản dựng là tĩnh, nhưng điều rất quan trọng là phải hiểu ý nghĩa của nó trong bối cảnh Qt - trên đó wkhtmltopdf được xây dựng. Một bản dựng tĩnh có nghĩa là chỉ có QT được liên kết theo cách này - các gói hệ thống còn lại vẫn cần được cài đặt. Trong một khoảng thời gian, các lĩnh vực khác nhau giữa các phân phối đã được tìm thấy bằng cách thử nghiệm và lỗi:
- Các phiên bản thư viện khác nhau: Không phải mọi phân phối cung cấp cùng một phiên bản. Điều này đặc biệt là trường hợp của
5 và$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
6, với rất nhiều phân phối lựa chọn giữa loạt 1.2, 1,5 và 1.6 cho phiên bản trước và nhiều phiên bản của$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
6 và/hoặc ngã ba$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
8 của nó. Mặc dù điều này có thể được giải quyết dễ dàng bằng cách liên kết chúng một cách thống trị [và thực sự được thực hiện như vậy đối với các bản phát hành trước đó] - nó đã bị phá vỡ khi đến điểm tiếp theo.: not every distribution provides the same versions. This was especially the case for$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
5 and$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
6, with a lot of distributions choosing between the 1.2, 1.5 and 1.6 series for the former and multiple versions of$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
6 and/or its fork$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
8. While this could be addressed easily by linking them statically [and was actually done so for previous releases] – it broke down when it came to the next point.$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
- Các phiên bản OpenSSL khác nhau: Do OpenSSL có hồ sơ theo dõi xấu sau đó [bây giờ tốt hơn], các bản phân phối bắt đầu nâng cấp mạnh mẽ phiên bản OpenSSL của họ và vô hiệu hóa các phần không sử dụng của thư viện. Điều này dẫn đến một tình huống có khả năng tương thích ngược một cách hiệu quả và mọi thứ bắt đầu phá vỡ ngẫu nhiên - xem #3001 để đọc rất dài các vấn đề phải đối mặt. Đây là động lực trực tiếp để tạo ra một kho lưu trữ bao bì riêng biệt.: due to OpenSSL having a bad track record then [it’s better now], distributions started aggressively upgrading their OpenSSL version and disabling unused parts of the library. This led to a situation where there was effectively zero backward compatibility and things started breaking randomly – see #3001 for a very long read of the problems faced. This was the direct motivation to create a separate packaging repository.
- LIBC không tương thích: Không phải mọi phân phối đều có cùng phiên bản GLIBC. Nếu bạn biên dịch với phiên bản sau, nó đã giành được công việc trên một phân phối sử dụng phiên bản cũ hơn. Điều này đã được làm việc xung quanh trước đó bằng cách sử dụng Centos 6 [có phiên bản Glibc đủ cũ]. Nhưng do sự gia tăng của Docker, hình ảnh
9 trở nên rất phổ biến. Điều này không sử dụng glibc, nhưng LIBC MUSL. Vì vậy, các nhị phân chung không bao giờ thực sự làm việc trên núi cao.: not every distribution has the same glibc version. If you compile with a later version, it won’t work on a distribution which uses an older version. This was worked around earlier by using CentOS 6 [which had an old enough glibc version]. But due to the rise of Docker, the$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
9 image became very popular. This doesn’t use glibc at all, but the musl libc. So the generic binaries never really worked on Alpine.$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2 bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
Mặc dù Python cũng đã cố gắng thực hiện việc này bằng cách sử dụng nhiều người - nó không luôn luôn hoạt động tốt [ví dụ:
$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2
bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
9 không được khuyến nghị với bánh xe nhị phân nếu bạn google cho nó] và yêu cầu bạn liên kết tĩnh mọi thứ. Điều này có thể hoạt động cho họ, nhưng wkhtmltopdf cũng phụ thuộc vào cấu hình thời gian chạy trên các phông chữ thực tế được cài đặt [tức là layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
1 và layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
2]. Không thể tóm tắt mọi thứ và kiểm tra/sửa chữa mọi thứ cho mọi hệ điều hành/phân phối với các nguồn lực hạn chế mà dự án này có-sẽ có ý nghĩa hơn khi tạo ra các phiên bản dành riêng cho phân phối gần như được đảm bảo để hoạt động, vì chúng sử dụng các phiên bản cụ thể mà Phân phối đã đóng gói.Tôi không thấy một bản tải xuống thích hợp cho nền tảng của tôi!
Nếu phân phối bạn đang sử dụng được liệt kê:
- Nhưng không phải là bản phát hành bản vá cụ thể - hãy thử nó, vì nó rất có thể hoạt động bất kể.
- Bản phát hành chính được liệt kê - chúng tôi chỉ hỗ trợ các phiên bản LTS, vì vậy hãy thử phiên bản LTS cũ hơn bản phát hành của bạn.
- Không thể cài đặt gói - bạn luôn có thể trích xuất nó [Google cho
3], nhưng bạn sẽ cần phải cài đặt các phụ thuộc.layers: wkhtmltoxLayer: name: wkhtmltox description: wkhtmltox binaries for pdf/image generation package: artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip functions: PdfGenerator: handler: generatePdf.handler layers: - { Ref: WkhtmltoxLayerLambdaLayer } environment: FONTCONFIG_PATH: /opt/fonts
Truy cập kho lưu trữ bao bì và bắt đầu một cuộc thảo luận nếu nền tảng của bạn không được liệt kê.
Làm cách nào để sử dụng nó với các thiết lập FAAS?
Bạn cần phải trích xuất gói dành riêng cho phân phối, gói nó với các thư viện, cấu hình và/hoặc phông chữ cần thiết và sau đó tải nó lên. Xem câu hỏi StackoverFlow này cho các chức năng của Google Cloud. PR được chào đón để mở rộng phần này, nếu bạn có thêm thông tin về điều này - đây không phải là một thiết lập mà người bảo trì sử dụng 😄
Làm cách nào để sử dụng nó trong AWS Lambda?
Tất cả các tệp cần thiết cho lớp Lambda được đóng gói trong một kho lưu trữ zip [Amazon Linux 2 / Lambda Zip]. Bạn có thể kiểm tra nó cục bộ bằng cách giải nén kho lưu trữ vào thư mục
layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
4 và chạy các lệnh tiếp theo:$ docker run --rm -it -v$PWD/layer:/opt amazonlinux:2
bash-4.2# LD_LIBRARY_PATH=/opt/lib FONTCONFIG_PATH=/opt/fonts /opt/bin/wkhtmltopdf //google.com/ /opt/google.pdf
Sau đó, bạn có thể tìm thấy một tệp PDF được tạo từ trang chủ Google trong thư mục
layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
4 của bạn.Để sử dụng
layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
6 trong chức năng Lambda của bạn, bạn có thể đặt nội dung của kho lưu trữ cùng với chức năng Lambda của bạn hoặc tạo một lớp. Don Tiết quên cung cấp một biến môi trường cho layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
1 [layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
8].Trong trường hợp bạn sử dụng Framework Serverless, bạn có thể thêm các dòng tiếp theo vào tệp
layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
9 của mình:layers:
wkhtmltoxLayer:
name: wkhtmltox
description: wkhtmltox binaries for pdf/image generation
package:
artifact: wkhtmltox-x.xx.xxx.amazonlinux2_lambda.zip
functions:
PdfGenerator:
handler: generatePdf.handler
layers:
- { Ref: WkhtmltoxLayerLambdaLayer }
environment:
FONTCONFIG_PATH: /opt/fonts
Symantec báo cáo virus //localhost/
0 cho các bản dựng Windows
Đây là một báo cáo dương tính giả vì Symantec chưa thấy tệp này trước đây - xem sự làm rõ này để biết chi tiết.