2012-01-09 31 views
34

Tôi đang làm việc trong một dự án sử dụng ruby ​​trên thanh ray (3.1). Yêu cầu của tôi là tạo pdf từ nội dung html. Vì vậy, tôi sử dụng đá quý pdfkit.Wkhtmltopdf Các ký tự trong một dòng được cắt một phần giữa các trang

Trong một số trang, các ký tự trong một dòng được cắt một phần giữa các trang. Khi tôi chuyển đổi html chuyển đổi sang pdf bằng pdfkit đá quý

phiên bản của wkhtmltopdf: wkhtmltopdf - 0.11.0 rc1

hệ điều hành: Linux CentOS 5,5

Trong hình ảnh dưới đây cho thấy nhân vật một phần cắt giữa các trang.

Vui lòng đề xuất giải pháp.

Ví dụ 1

enter image description here

Ví dụ 2

enter image description here

+1

Lệnh đầy đủ bạn đang sử dụng để tạo pdf là gì? –

+0

Lệnh được tạo từ đá quý pdfkit: \t wkhtmltopdf "--trang kích thước" "A4" "--margin-top" "5mm" "--margin-right" "5mm" "--margin-bottom" "5mm" "--margin-left" "5mm" "--encoding" "UTF-8" "--quiet" "1011284.html" "test.pdf" – amexn

+0

điều gì xảy ra nếu bạn thay đổi lề? hiện nó vẫn cắt nó đi? – Matt

Trả lời

7

Theo some documentation tôi thấy (xem trang Breaking), đây là một vấn đề được biết và đề nghị sử dụng CSS ngắt trang để chèn ngắt trang (giả sử bạn đang sử dụng phiên bản được vá của QT):

Thuật toán ngắt trang hiện tại của WebKit để lại nhiều yêu cầu là mong muốn. Về cơ bản, webkit sẽ hiển thị mọi thứ thành một trang dài, và sau đó cắt nó thành các trang. Điều này có nghĩa là nếu bạn có hai cột văn bản trong đó văn bản được dịch chuyển theo chiều dọc một nửa dòng. Sau đó, webkit sẽ cắt một đường thành từng phần hiển thị nửa trên cùng trên một trang. Và nửa dưới trên một trang khác. Nó cũng sẽ phá vỡ hình ảnh trong hai và như vậy. Nếu bạn đang sử dụng phiên bản vá lỗi của QT, bạn có thể sử dụng thuộc tính page-break-inside CSS để khắc phục điều này một chút. Không có giải pháp dễ dàng cho vấn đề này, cho đến khi giải pháp này được giải quyết, hãy thử tổ chức các tài liệu HTML của bạn sao cho nó chứa nhiều dòng trên các trang có thể bị cắt .

Xem thêm: http://code.google.com/p/wkhtmltopdf/issues/detail?id=9, http://code.google.com/p/wkhtmltopdf/issues/detail?id=33http://code.google.com/p/wkhtmltopdf/issues/detail?id=57.

+1

Điều này không còn xảy ra. Câu trả lời dưới đây bởi @Besi giải quyết mọi vấn đề ngắt trang, chưa kể đến việc chỉ nhận phiên bản mới nhất của 'wkhtmltopdf' (0.12.2.1). Thêm nội dung sau vào CSS của bạn: 'bảng, img, blockquote {page-break-inside: tránh;}' – craned

+0

@craned không đúng. Vấn đề chỉ được giải quyết một phần và nó vẫn còn đó. 'Page-break-inside' sẽ chỉ giúp cho toàn bộ khối bạn đang thêm nó vào. Ví dụ: nếu 1 đoạn/khối dài hơn một trang, thì 'page-break-inside' sẽ không trợ giúp và văn bản sẽ bị cắt trong một số trường hợp. Không sao để sửa nó nếu nó là văn bản tĩnh, nhưng nó là một vấn đề với văn bản được tạo động khi bạn không biết khối đó sẽ là bao lâu. Vì vậy, vấn đề vẫn còn đó và chỉ giải quyết một phần. – Neel

+0

@Neel, trong trường hợp đó tôi muốn nói nó chủ yếu được giải quyết. Ít nhất là trong kịch bản cụ thể của tôi, 1 đoạn văn/khối không bao giờ là một vấn đề. Hoàn toàn thẳng thắn, một đoạn văn/khối không bao giờ dài hơn một trang bình thường, nhưng trong trường hợp hiếm hoi như vậy, thì có, đó sẽ là một nơi mà vấn đề vẫn còn tồn tại. – craned

9

Tôi vừa thực hiện việc này và tìm thấy điều gì đó đã giải quyết được vấn đề cho tôi. Trong trường hợp cụ thể của tôi, đã có số div với display: inline-block; margin-bottom: -20px;. Một khi tôi thay đổi chúng để chặn và thiết lập lại margin-bottom, tách dòng biến mất. YMMV.

+0

Cảm ơn bạn, tôi đã có cùng một vấn đề với một yếu tố "bài viết". Sau khi thêm 'display: block', nó hoạt động như một nét duyên dáng. – nils

+0

@nvahalik: Bạn đã thêm phần tử hiển thị: khối nào? tôi có một vấn đề tương tự với việc xuất bảng trong pdf. SO câu hỏi ở đây - http://stackoverflow.com/questions/17046385/wicked-pdf-rendering-the-last-row-across-two-pages – usha

1

Vấn đề cắt văn bản là một vấn đề về webkit đã biết và có vẻ như các nhà phát triển đã tìm thấy giải pháp bên trong wkhtmltopdf. Việc cập nhật lên 0.12.1 sẽ khắc phục vấn đề cắt văn bản (nếu bạn không muốn lãng phí thời gian với các bộ sưu tập, bạn chỉ có thể lấy tệp nhị phân từ đây: https://github.com/h4cc/wkhtmltopdf-amd64).

+1

Tôi đang sử dụng 0.12.2.1, đây là phiên bản cập nhật của wkhtmltopdf . Tôi vẫn dường như có vấn đề này, vì vậy tôi không nghĩ rằng đây là sửa chữa (kể từ khi tôi nghi ngờ họ giới thiệu lại các lỗi trong một phiên bản mới hơn). – rageandqq

+0

Tôi xác nhận 0.12.1 hoạt động tại thời điểm này - không chơi với nó kể từ đó. –

+0

Sử dụng wkhtmltopdf 0.12.2.1 (với qt được vá), vẫn là vấn đề. –

4

Tôi đã có vấn đề này với một bảng:

enter image description here

Sau đó, tôi thêm này để CSS của tôi:

table, img, blockquote {page-break-inside: avoid;} 

này cố định vấn đề:

enter image description here

+0

Điều này không hiệu quả đối với tôi. Tôi đã thử cài đặt thuộc tính này trên bao gồm td, tr và div và dòng vẫn bị cắt. –

1

Trong trường hợp của tôi, sự cố đã xảy ra lved bằng cách bình luận ra css sau:

html, body { 
    overflow-x: hidden; 
} 

Nói chung, kiểm tra nếu có thẻ có overflow bộ như hidden và loại bỏ nó hoặc đặt nó vào visible.

Btw, tôi đang sử dụng wkhtmltopdf version 0.12.2.1 trên Windows 8.

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