2017-03-13 18 views
5

Tôi đang sử dụng wkhtmltopdf thông qua sự linh hoạt trong dự án của mình. Trên máy tính địa phương của tôi đầu ra là chính xác: https://www.dropbox.com/s/ml9cp2pa6d8wja5/Zaznaczenie_100.png?dl=0wkhtmltopdf - cùng một cấu hình đầu ra khác nhau

nhưng khi tôi triển khai dự án đến máy chủ pdf là cái nhìn rất khác nhau, có lẽ là chiều rộng của khung nhìn là khác nhau: https://www.dropbox.com/s/8g0c29bzaxltyb9/170311_123139_4775.jpg?dl=0

Cả hai hệ thống sử dụng chính xác cùng một cấu hình để tạo pdf.

Câu hỏi của tôi là:

  • làm thế nào tôi có thể kiểm tra cấu hình mặc định của wkhtmltopdf trên máy tính cụ thể là bao nhiêu?
  • làm cách nào để thay đổi kích thước khung nhìn để đầu ra của tôi giống hệt nhau trên các máy khác nhau?

Tôi đặt chiều rộng và chiều cao của trang đầu ra theo cách thủ công (tương ứng 21 cm và 50 cm). Tôi đã thử kết hợp khác nhau với tham số DPI, nhưng nó dường như không có hiệu lực.

Tôi đang sử dụng trình bao bọc wkhtmltpdf PHP - snappy - nhưng tôi đã kiểm tra và tôi nhận được kết quả tương tự trong bảng điều khiển, do đó, vấn đề là wkhtmltopdf có liên quan, không linh hoạt.

+0

Các liên kết DropBox của bạn dường như không hoạt động. Có lẽ bạn nên reupload hình ảnh của bạn thông qua hộp chỉnh sửa mà sẽ lưu trữ hình ảnh của bạn trên lưu trữ của Stack Overflow imgur. –

+0

Cảm ơn bạn đã sửa nó! – Gacek

+0

Bạn có thể xác nhận rằng hai phiên bản trên wkhtmltopdf là giống nhau không? – Ruslan

Trả lời

0

Một trong những điều chính dường như khác với kết quả đầu ra PDF của bạn là khuôn mặt phông chữ. wkhtmltopdf yêu cầu phông chữ phải được cài đặt trên hệ điều hành của bạn giống như cách trình duyệt yêu cầu. Có thể là sự khác biệt về khoảng cách và kích thước phông chữ ảnh hưởng đến bố cục trang của bạn. Trước tiên, bạn nên xem những phông chữ nào bạn đang cố sử dụng trong tệp nguồn của mình và cài đặt chúng trên máy chủ của bạn. Một khởi đầu tốt là cài đặt phông chữ lõi của Microsoft từ here hoặc từ kho lưu trữ của máy chủ của bạn.

Một cách khác xung quanh này là sử dụng @font-face chỉ trong stylesheets tệp nguồn của bạn để liên kết đến các phông chữ từ một URL mà không cần cài đặt chúng trên máy chủ của bạn:

@font-face { 
    font-family: 'Roboto'; 
    font-style: normal; 
    font-weight: 400; 
    src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v15/CWB0XYA8bzo0kSThX0UTuA.woff2) format('woff2'); 
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215; 
} 

Trong trường hợp của phông chữ web của Google, bạn thay vào đó có thể nhập biểu định kiểu của chúng:

<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" /> 

Một điều cần kiểm tra khác là các phiên bản của wkhtmltopdf trên máy trạm và máy chủ của bạn. Chạy wkhtmltopdf --version sẽ cho bạn biết phiên bản hiện được cài đặt của bạn. Có thể trường hợp máy chủ của bạn đang chạy phiên bản wkhtmltopdf lỗi thời. Cách dễ nhất để cài đặt phiên bản cập nhật của wkhtmltopdf với các tính năng bạn cần là từ here, nơi bạn có thể tải xuống các tệp nhị phân Linux được liên kết tĩnh cho bất kỳ bản phân phối nào.

Một điều cuối cùng cần thử là sử dụng các đối số --margin-top, --margin-right, --margin-bottom--margin-left khác. Ngoài ra còn có một lá cờ được gọi là --viewport-size có thể giúp đưa ra kết quả tốt hơn.

wkhtmltopdf --viewport-size 1024x768 page.html output.pdf 

Nếu bạn đang sử dụng cùng một phiên bản của wkhtmltopdf trên cả máy trạm và máy chủ của bạn, tuy nhiên, các tùy chọn cấu hình nên không tạo sự khác biệt, như bạn đã nêu bạn đang sử dụng cấu hình tương tự trên cả hai rồi.

+0

Phông chữ không phải là vấn đề. Tôi đã thử - flag kích thước xem, nhưng có vẻ như đã chết - không có hiệu lực. Lề được đặt giống nhau trên cả hai máy – Gacek

+0

@Gacek Phiên bản nào của wkhtmltopdf trên máy chủ và máy trạm của bạn? Và bạn đã cài đặt chúng từ đâu? –

0

Để sao lưu Candy Gumdrop, chúng tôi đã thử lề, nhưng câu trả lời của chúng tôi hóa ra là quản trị viên đã sử dụng lại bản sao 32 bit wkhtmltopdf trên máy chủ sản xuất chứ không phải phiên bản 64 bit tôi đã sử dụng. Toàn bộ kết quả của "wkhtmltopdf --version" cần phải khớp, không chỉ số phiên bản.

Các vấn đề liên quan