Wkhtmltoxsharp

Open back

Edit

xoa

Mount Flag

Làm cách nào để cài đặt wkhtmltopdf trong windows? Đã đóng

Open back

Edit

xoa

Mount Flag

Siddharth Gajjar [sga]

13 tháng 3 2020

Ngừng theo dõi Đăng ký nhận tin

Cảm ơn bạn đã đăng ký

Câu hỏi đã đóng với nguyên nhân. không liên quan hoặc hết hạn

bởi

Ermin Trevisan

trên 05/10/2021 23. 29. 44

Open back

Làm cách nào để cài đặt wkhtmltopdf trong windows?

Bình luận bài đăng

1Trả lời

0

Alexander

2 tháng 12 2020

Câu trả lời hay nhất

Trên trang https. //wkhtmltopdf. tổ chức/tải xuống. html có Windows Installer. Vui lòng xác định vấn đề

Bình luận Chia sẻ

Bình luận bài đăng

Bạn có thể chỉ định tất cả các tùy chọn wkhtmltopdf. Bạn có thể bỏ '–' trong tên tùy chọn. Nếu tùy chọn không có giá trị, hãy sử dụng Không, Sai hoặc ‘’ cho giá trị chính tả. Đối với các tùy chọn có thể lặp lại [bao gồm. allow, cookie, custom-header, post, postfile, run-script, replace], bạn có thể sử dụng danh sách hoặc bộ dữ liệu. Với tùy chọn cần nhiều giá trị [e. g. –custom-header Authorization secret], chúng ta có thể sử dụng 2-tuple [xem ví dụ bên dưới]

options = {
    'page-size': 'Letter',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
    'encoding': "UTF-8",
    'custom-header': [
        ['Accept-Encoding', 'gzip']
    ],
    'cookie': [
        ['cookie-empty-value', '""']
        ['cookie-name1', 'cookie-value1'],
        ['cookie-name2', 'cookie-value2'],
    ],
    'no-outline': None
}

pdfkit.from_url['//google.com', 'out.pdf', options=options]

Theo mặc định, PDFKit sẽ chạy wkhtmltopdf với tùy chọn im lặng được bật, vì trong hầu hết các trường hợp, đầu ra là không cần thiết và có thể gây sử dụng bộ nhớ quá mức và kết quả bị hỏng. Nếu cần nhận đầu ra wkhtmltopdf, bạn nên chuyển verbose=True cho lệnh gọi API

pdfkit.from_url['google.com', 'out.pdf', verbose=True]

Do cú pháp lệnh wkhtmltopdf, các tùy chọn TOC và Cover phải được chỉ định riêng. Nếu bạn cần cover trước TOC, hãy sử dụng tùy chọn cover_first

toc = {
    'xsl-style-sheet': 'toc.xsl'
}

cover = 'cover.html'

pdfkit.from_file['file.html', options=options, toc=toc, cover=cover]
pdfkit.from_file['file.html', options=options, toc=toc, cover=cover, cover_first=True]

Bạn có thể chỉ định các tệp CSS bên ngoài khi chuyển đổi tệp hoặc chuỗi bằng tùy chọn css

Cảnh báo Đây là một cách giải quyết cho lỗi này trong wkhtmltopdf. Bạn nên thử tùy chọn –user-style-sheet trước

Dự án dự án wkhtmltopdf được nhúng yêu cầu phải cài đặt Visual C++ 2015 Redistributable [x86] trên máy khi chạy. Bạn có thể lấy nó ở đây từ trang web của Microsoft

HIỆN TRẠNG & HẠN CHẾ

Tôi đã sử dụng nó trong sản xuất từ ​​Q4/2010 và cho đến nay nó vẫn hoạt động tốt, vì vậy chúng tôi có thể nói rằng nó gần như 'sẵn sàng sản xuất'

Cách tôi đang sử dụng thành phần này là từ dịch vụ cửa sổ văn phòng hỗ trợ xử lý chuyển đổi html->pdf như một phần của một số quy trình công việc do người dùng bắt đầu từ ứng dụng web, do đó, ứng dụng web không trực tiếp gọi WkHtmlToXSharp mà thay vào đó sẽ gửi một

Như tôi đã nói, nó đang hoạt động khá tốt, tuy nhiên, tôi nghĩ tôi nên tư vấn cho bạn về những hạn chế hiện tại của API

  • Chuyển đổi đồng thời. Thành phần hiển thị hai lớp chuyển đổi chính 'WkHtmlToPdfConverter' & 'MultiplexingConverter', cả hai đều đóng vai trò là phương tiện để chuyển đổi từ html sang pdf, WkHtmlToPdfConverter là trình bao bọc OO đơn giản chống lại wkhtmltox. dll, nhưng, do wkhtmltox. dll, tất cả các lệnh gọi đến API của nó phải được thực hiện từ cùng một chuỗi, đây có thể là sự cố trên ứng dụng web. Để tránh phần nào giới hạn như vậy, tôi đã định nghĩa một lớp có tên 'MultiplexingConverter' sử dụng và luồng được tạo bên trong để thực hiện chuyển đổi tuần tự hóa các cuộc gọi đến thư viện C bên dưới trong luồng đó

API hoàn toàn giống với API mà WkHtmlToPdfConverter hiển thị, nó chỉ là một trình bao bọc xử lý [và ẩn] những phức tạp liên quan đến việc sử dụng cùng một luồng cho tất cả các cuộc gọi. Ngoài ra, điều này ảnh hưởng đến hiệu suất [vì các chuyển đổi không thực sự chạy đồng thời mà được tuần tự hóa theo một chuỗi 'proxy' duy nhất], vì vậy nếu ứng dụng của bạn cần chuyển đổi đồng thời lớn, thì đây có thể là một vấn đề

  • Chưa có chuyển đổi html sang hình ảnh nào. Hiện tại, API chỉ hỗ trợ chuyển đổi Html->Pdf, mặc dù wkhtmltox. dll cũng hỗ trợ html->hình ảnh. Mặc dù việc triển khai WkHtmlToImage khá dễ dàng, nhưng nó vẫn đang CẦN LÀM do hạn chế về thời gian

  • Không có 64 bit trên windows. Không có dll windows 64 bit gốc nào có sẵn từ dự án wkhtmltopdf và thậm chí tôi đã thử và tự xây dựng nó, thành phần được sản xuất hoạt động khá hoàn hảo, có thể là do những hạn chế trên chuỗi công cụ gnu hiện tại [hoặc thậm chí là qt] trên windows 64. vì vậy tất cả điều này có nghĩa là không có hỗ trợ chỉ chạy trên 64 bit. môi trường mạng

    Hiện tại có hai cách giải quyết khả thi

    1. Xây dựng các dự án của bạn liên kết với WkHtmlToXSharp. dll thành 'x86' thay vì 'AnyCpu'

    2. Hoặc chạy ứng dụng của bạn trên nhóm ứng dụng chỉ 32 bit trên IIS

  • Giới hạn P/Invoke thông thường. Hội đồng này sử dụng P/Gọi để gọi wkhtmltox. dll, vì vậy các hạn chế thông thường xuất phát từ việc sử dụng P/Invoke sẽ được áp dụng

Lưu ý cuối cùng, tôi nên lưu ý rằng khi sử dụng thành phần này, không cần tải xuống hay cài đặt wkhtmltox. dll, như bản địa. dll/. vì vậy các tệp cần thiết được nhúng vào WkHtmlToXSharp. dll và chúng được triển khai tự động khi thực hiện chuyển đổi lần đầu tiên

Điều này làm cho dll lớn hơn [ngay cả khi dll gốc được nhúng dưới dạng tài nguyên được nén], nhưng điều này làm cho mọi thứ trở nên thú vị và dễ dàng hơn nhiều. ;] Khi dll nhúng được ghi vào đĩa, dự án của bạn sẽ cần quyền ghi vào thư mục được cài đặt trong đó

Chủ Đề