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 đó
Người được đề cử. 7x
> 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 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 //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ố 8Trong 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
0Cá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
2Tô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
3Cá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
5Vì 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