Cách sử dụng wkhtmltopdf trong laravel

Nó có thể lấy một chuỗi văn bản HTML và chuyển đổi nó thành một tài liệu PDF bằng cách sử dụng wkhtmltopdf bằng cách thực thi nó trong môi trường X-Windows chạy trên bộ đệm hình ảnh ảo trên bộ nhớ

Nó không yêu cầu card đồ họa để bạn xem tài liệu trên màn hình để hiển thị tài liệu PDF

Tài liệu PDF đã tạo được cung cấp để tải xuống dưới dạng đầu ra của tập lệnh hiện tại đang được thực thi

Mặc dù gói được thiết kế để chạy bằng Laravel, nhưng nó có thể được sử dụng mà không yêu cầu cài đặt khung đó

Cách sử dụng wkhtmltopdf trong laravel
Giải thưởng đổi mới
Cách sử dụng wkhtmltopdf trong laravel

Người được đề cử. 7x


Cách sử dụng wkhtmltopdf trong laravel
Cách sử dụng wkhtmltopdf trong laravel
Cách sử dụng wkhtmltopdf trong laravel
Cách sử dụng wkhtmltopdf trong laravel

> Gói đơn giản để dễ dàng tạo tài liệu PDF từ HTML. Gói này đặc biệt dành cho laravel nhưng bạn có thể sử dụng gói này mà không cần laravel

Cài đặt

Cài đặt wkhtmltopdf

Điều này đã được thử nghiệm trên

  • Ubuntu 14. 04x64
  • Ubuntu 16. 04x64
sudo apt-get update
sudo apt-get install xvfb libfontconfig wkhtmltopdf

cho docker

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf

Cập nhật nhà soạn nhạc

composer require nahidulhasan/html2pdf

Nếu phiên bản laravel <5. 5, thêm ServiceProvider vào mảng nhà cung cấp trong config/app. php

NahidulHasan\Html2pdf\Html2pdfServiceProvider::class,

Bạn có thể tùy chọn sử dụng mặt tiền cho mã ngắn hơn. Thêm phần này vào mặt tiền của bạn

'Pdf'  => NahidulHasan\Html2pdf\Facades\Pdf::class,

Sử dụng cơ bản

Để tạo PDF, hãy thêm một cái gì đó như thế này vào một trong các bộ điều khiển của bạn

use NahidulHasan\Html2pdf\Facades\Pdf;

$document = Pdf::generatePdf('Test');

Bạn cũng có thể tạo PDF từ việc gọi trực tiếp tệp laravel blade. Giả sử bạn có một mẫu thư có tên là lời chào trong thư mục view/mails và muốn gửi tham số thì bạn phải gọi phương thức generatePdf như được mô tả bên dưới

Tôi đang cố gắng để gói wkhtmltopdf hoạt động trên ứng dụng Laravel 8 chạy trên Cloud Run cho GCP. Nó sử dụng NGINX và Docker. Đây là tài liệu chính thức của gói. https. //github. com/barryvdh/laravel-snappy

Tôi có thể làm cho nó hoạt động cục bộ trên máy tính windows của riêng mình bằng tệp nhị phân. exe dành cho windows nhưng dường như tôi không thể làm cho nó hoạt động trong môi trường sản xuất trên Cloud Run. Tôi đã thử một số hướng dẫn và bài đăng khác nhau, một vài tệp nhị phân khác nhau, nhưng không có tệp nào hoạt động và dường như không có tệp nào dành riêng cho Cloud Run. Tôi rất chắc chắn rằng các ứng dụng Cloud Run chạy trên hệ điều hành Debian 11 (bullseye). Đó là những gì nó nói trên App Engine trong GCP

Trong Dockerfile, ban đầu tôi di chuyển tất cả các tệp của mình vào một thư mục có tên/ứng dụng

FROM php:7.4-fpm-alpine
RUN mkdir -p /run/nginx
COPY docker/nginx.conf /etc/nginx/nginx.conf
RUN mkdir -p /app
COPY . /app

Sau đó, tôi cài đặt tất cả các gói cần thiết và cài đặt trình soạn nhạc và đó là các gói

RUN apk upgrade --update --no-cache && apk add \
    nginx \
    wget \
    libpng-dev \
    libzip-dev \
    libxml2-dev \
    nodejs \
    npm \
  && docker-php-ext-install \
    gd \
    zip \
    soap \
    exif \
    mysqli \
    pdo \
    pdo_mysql

RUN sh -c "wget http://getcomposer.org/composer.phar && chmod a+x composer.phar && mv composer.phar /usr/local/bin/composer"
RUN cd /app && \
    /usr/local/bin/composer install --no-dev
RUN cd /app && \
    /usr/local/bin/composer dump-autoload -o

Cho đến nay, tôi đã thử một vài phương pháp khác nhau. Xem các phương pháp được liệt kê dưới đây


Phương pháp đầu tiên Phương pháp đầu tiên liên quan đến việc cài đặt gói wkhtmltopdf bằng trình soạn thảo. Bất cứ khi nào tôi thử phương pháp này, nó hoàn toàn không thể tìm thấy tệp. Đầu tiên, chúng tôi cài đặt gói bằng trình soạn thảo

________số 8

Trong Dockerfile, tôi cũng có thể sao chép tệp nhị phân và làm cho nó có thể thực thi tốt mà không có lỗi. Đây là Dockerfile của tôi

RUN cp /app/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf-amd64
RUN chmod +x /usr/local/bin/wkhtmltopdf-amd64

Sau đó, chúng ta phải xác định đường dẫn đến tệp nhị phân. Đây là cấu hình/snappy của tôi. tập tin php

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
0

Cái nào trả về lỗi sau

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
1

Để kết luận với phương pháp đầu tiên, tôi chắc chắn rằng tệp ở đó nhưng nó không tương thích để thực thi trên môi trường của Cloud Run


Phương pháp thứ hai Tôi thậm chí đã thử di chuyển tệp nhị phân vào cùng một thư mục (trong trường hợp của tôi là thư mục ứng dụng) thay vì thư mục bin cục bộ usr để xác nhận rằng tệp nhị phân ở đó nhưng Cloud Run không thể thực thi nó

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
2

Tôi thậm chí còn di chuyển (các) tệp nhị phân vào thư mục làm việc của mình và sau đó chuyển nó vào kho lưu trữ của tôi (tôi biết, đó không phải là một cách làm tốt nhưng muốn xem liệu nó có hoạt động không) để tôi biết chắc chắn tệp nằm ở đâu . Đây là cấu hình/snappy. tập tin php

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
3

Cái nào trả về lỗi sau

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
4

Để kết luận với phương pháp thứ hai, tôi đã di chuyển (các) tệp nhị phân đến một vị trí mà tôi biết chắc chắn rằng có thể tìm thấy nó vì tôi có thể định vị các tệp khác từ config/snappy. php trong cùng thư mục


Phương pháp thứ ba Tôi cũng đã thử một số phiên bản khác nhau của tệp nhị phân wkhtmltopdf (cụ thể là chỉ các kiến ​​trúc Debian 11 Bullseye) từ đây. https. //wkhtmltopdf. tổ chức/tải xuống. html Trong phương pháp này, tôi tải xuống tệp và sau đó chuyển nó vào kho lưu trữ của mình (đó là nơi tôi nghĩ rằng mình đã làm sai). Tôi có thể lấy nó để tìm tệp nhị phân thực tế bằng cách sử dụng đường dẫn trong config/snappy. php. Các tập tin được tìm thấy. Tuy nhiên, không có tệp nhị phân nào tôi đã thử dường như hoạt động trực tiếp trên ứng dụng Cloud Run của tôi. Bất cứ khi nào tôi chạy bất kỳ tệp nhị phân nào trong ứng dụng Cloud Run của mình, tôi đều gặp phải lỗi sau

RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
5

Vì vậy, khi nó có thể tìm thấy. deb (hoặc bất kỳ tệp nhị phân nào khác mà tôi đã thử cho vấn đề này) được xác định trong config/snappy. php, nó không thể thực thi tệp và tạo PDF khi nó đang được sản xuất. Vì vậy, tôi phải làm điều này sai. Tôi không thể tìm thấy giải pháp dành riêng cho các ứng dụng Cloud Run trực tuyến. Tôi bắt đầu nghĩ rằng mình đang sử dụng sai tệp nhị phân tương thích với Cloud Run hoặc tôi đang tải xuống và cài đặt gói không đúng cách và bằng cách nào đó nên cài đặt nó trong Dockerfile. Tôi đã thấy các phương pháp cài đặt wkhtmltopdf trong Docker nhưng không có phương pháp nào phù hợp với tôi và/hoặc không có phương pháp nào tương thích với thiết lập của tôi

Làm cách nào để sử dụng PDF linh hoạt trong laravel?

Trình bao bọc hình ảnh Snappy dành cho Laravel .
1// Tạo PDF từ chế độ xem. 2$pdf = PDF. loadView('pdf. hóa đơn', dữ liệu $); . pdf');
5// Tạo PDF từ một URL. 6PDF. tảiFile('https. //www. github. com') 7 ->inline('github. pdf');
9// Thay đổi hướng và khổ giấy. 10PDF. tảiHtml($html)

Làm cách nào để cài đặt Snappy trong laravel?

Bạn phải đặt vị trí nhị phân trong tệp cấu hình. Sao chép cấu hình/snappy. php thành cấu hình của riêng bạn hoặc sử dụng Trình cung cấp dịch vụ cấu hình của bạn để đặt các khóa cấu hình. và sau đó điều chỉnh dòng "nhị phân" trong tệp cấu hình đã xuất bản (sau khi xuất bản phải có trong. ứng dụng/config/gói/barryvdh/laravel-snappy/config.

Làm cách nào để chuyển đổi HTML sang PDF trong Laravel 8?

Hãy thực hiện việc này bằng cách sử dụng gói DomPDF của Laravel, gói này dễ dàng hơn đối với chúng tôi vì chúng tôi chỉ sử dụng chế độ xem HTML và chuyển đổi nó thành PDF. .
Bước 1. Cài đặt Laravel. .
Bước 2. Cài đặt gói dompdf. .
Bước 3. Thiết lập tuyến đường và bộ điều khiển. .
Bước 4. Chế độ xem thiết lập

Làm cách nào để tạo PDF từ HTML trong laravel?

Cách tạo PDF từ HTML trong laravel 5 .
Bước 1. Cài đặt. nhà soạn nhạc yêu cầu barryvdh/laravel-dompdf. .
Bước 2. Thêm nhà cung cấp dịch vụ. Bây giờ hãy mở cấu hình/ứng dụng. .
Bước 3. Thêm tuyến đường. Mở tuyến/web. .
Bước 4. Tạo bộ điều khiển. tạo một tệp trong app/Http/Controllers/BestInterviewQuestionController. .
Bước 5. Tạo Xem tập tin