Hướng dẫn how do i set up wkhtmltopdf? - làm cách nào để thiết lập wkhtmltopdf?

Nó là gì?

wkhtmltopdfwkhtmltoimage 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ô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ó?

  1. 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
  2. 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)
  3. 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 http://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.

OS/DistributionĐược hỗ trợ trênKiến trúc
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 MacTrình cài đặt (10,7 trở lên)Debian11 (bullseye) AMD64 i386
ARM64Trình cài đặt (10,7 trở lên)Debian11 (bullseye) AMD64 i386
ARM64Trình cài đặt (10,7 trở lên)Debian11 (bullseye)& nbsp; i386
ARM64 PPC64ELTrì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)Debian11 (bullseye) AMD64& nbsp;
Lưu trữ 7Z (XP/2003 trở lên)Trình cài đặt (10,7 trở lên)Debian11 (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 MacTrì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 MacTrình cài đặt (10,7 trở lên)& nbsp;
Lưu trữ 7Z (XP/2003 trở lên)hệ điều hành Machệ đ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.

Debian11 (bullseye)
AMD640.12.5
i386 ARM64
PPC64EL0.12.4
Raspberrypi10 (buster)
9 (stretch)Ubuntu
22.04 (jammy)0.12.3
20.04 (focal)18.04 (
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
0)
16.04 (
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)
Almalinux
x86_64 Aarch64
ppc64le0.12.2.1
Centos0.12.2
i6860.12.1
Amazon Linux0.12.0

2 (gói)

2 (Lambda Zip)

OpenSuse Leap

Arch Linux

Tất cả các gói trên được sản xuất tự động và được xây dựng trên bản phát hành bản vá hệ điều hành/phân phối mới nhất tại thời điểm phát hành.

Lưu trữ

Xin lưu ý rằng các báo cáo lỗi sẽ không được chấp nhận đối với những điều sau đây, được coi là lỗi thời. Thay vào đó, bạn nên sử dụng bản phát hành ổn định mới nhất và báo cáo một vấn đề nếu có hồi quy từ bản phát hành trước đó.

  • 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
    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
    
    3 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
    
    4, 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
    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à/hoặc ngã ba
    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 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
    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
    
    3 and
    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, with a lot of distributions choosing between the 1.2, 1.5 and 1.6 series for the former and multiple versions of
    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 and/or its fork
    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. 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.
  • 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
    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
    
    7 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
    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
    
    7 image became very popular. This doesn’t use glibc at all, but the musl libc. So the generic binaries never really worked on Alpine.

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ụ:

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
7 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
9 và wkhtmltopdf0). 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 wkhtmltopdf1), nhưng bạn sẽ cần phải cài đặt các phụ thuộc.

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 wkhtmltopdf2 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 https://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 wkhtmltopdf2 của bạn.

Để sử dụng wkhtmltopdf4 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 hàm 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
9 (wkhtmltopdf6).

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 wkhtmltopdf7 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 wkhtmltopdf8 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.

Làm cách nào để định cấu hình wkhtmltopdf?

Hướng dẫn: Tải xuống một phiên bản thích hợp của thư viện WKHTMLTOPDF từ http://wkhtmltopdf.org. Nếu bạn đang ở trên hệ điều hành Windows thì hãy cài đặt nó trong C: \ Drive (ví dụ: C: \ WKHTMLTOPDF). Trên Linux/UNIX, bạn có thể cài đặt nó theo/usr/local/bin và đảm bảo wkhtmltopdf có quyền thực thi.Download an appropriate version of wkHTMLtoPDF library from http://wkhtmltopdf.org. If you are on Windows operating system then do install it under C:\ drive (for example c:\wkhtmltopdf). On Linux/UNIX, you can install it under /usr/local/bin and make sure wkhtmltopdf has execute permissions.

Làm cách nào để bắt đầu wkhtmltopdf?

Mở một cửa sổ nhắc lệnh.Cú pháp sử dụng công cụ khá đơn giản, nhập tên WKHTMLTOPDF, theo sau là URL của trang web và tên của PDF mà bạn muốn tạo, như vậy.enter the name wkhtmltopdf, followed by the URL of the web page, and the name of the PDF that you want to create, like so.

Làm thế nào để tôi biết nếu wkhtmltopdf được cài đặt?

Kiểm tra sau khi cài đặt..
Đảm bảo rằng việc cài đặt được hoàn thành bình thường ..
Nhập lệnh tiếp theo tại dấu nhắc lệnh.wkhtmltopdf --version ..
Cài đặt được hoàn thành bình thường nếu màn hình theo màn hình sau ..

Làm cách nào để tải xuống và cài đặt wkhtmltopdf?

Cài đặt wkhtmltopdf 0.12 ...
Tải xuống gói.wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/doad/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb ..
Cài đặt gói.sudo dpkg -i wkhtmltux_0.12.5-1.bionic_amd64.deb ..
Khắc phục sự phụ thuộc.sudo apt install -f.Đó là tất cả mọi người, bây giờ bạn đã hoàn thành!.