2014-01-16 2 views
1

Я использую wkhtmltopdf (через «rubkit» ruby ​​gem) для создания pdf-файла из html. На странице, где текстовое содержимое является длинным, есть раздел, который обычно занимает 2 (или более) страницы. Иногда случается, что строка текста разделяется между страницами. Вот изображение, чтобы помочь вам понять, что я имею в виду:wkhtmltopdf текст разделен на 2 страницы

enter image description here

Теперь я сделал свою лепту исследования по этому вопросу: например, я попытался CSS исправить на sorrounding DIV (который был предложен в некоторых других StackOverflow вопросы), например, так:

page-break-inside:avoid !important; 

и/или

page-break-before: always !important; 

не работает.

Я также попытался:

display: block !important; 

, который не работает.

Кто-нибудь знает, как исправить эту проблему?

FYI: Я использую последнюю версию wkhtmltopdf: wkhtmltopdf-0.11.0_rc1

+0

Не могли бы вы показать/ссылку на HTML и CSS? Я ежедневно использую wkhtmltopdf, и для меня это не проблема, поэтому я бы хотел проверить ваши данные и сценарий. – Nenotlep

+0

hmm .. Я передал один и тот же html-контент в статический двоичный файл whtmltopdf's "linux", и проблема исчезла. Теперь я думаю, что это может быть проблемой с версией Mac. Я отправлю решение, как только узнаю. Тем временем я буду признателен за любую помощь. постскриптум Похоже, что когда вы делаете wkhtmltopdf --version на пакете, установленном на домашнем компьютере, отображается неверный номер версии. Фактически установленная версия составляет 0.10 rc. – Pouya

+1

Убедитесь, что этот или родительский divs переполнены как скрытые. Если это так, измените его на видимое. Это исправило проблему для меня. –

ответ

0

Это решение в течение wicked-pdf и wkhtmltopdf.

После того, как попал в подобного рода вопрос, но фиксировано, изменяя содержимое в папку configurationwicked_pdf.rb файл в

WickedPdf.config = { 
    :layout => "pdf.html", 
    :margin => { :top=> 60, #previously 40 
        :bottom => 40, #previously 20 
        :left=> 30, 
        :right => 30}, 
    :header => {:html => { :template=> 'layouts/pdf_header.html'}}, 
    :footer => {:html => { :template=> 'layouts/pdf_footer.html'}}, 
    :exe_path => '/usr/bin/wkhtmltopdf' 
} 

меняется от previous to new values, он работал отлично на локальной машине.

Когда вы вносите изменения в wicked_pdf.rb, сервер необходимо перезапустить и убедиться, что page-break-before: always находится в нужном месте.

Надеется, что это помогает :)

+0

Я использую pdfkit. и я использовал page-break-before: always; на нескольких контейнерах/родительских div, без каких-либо успехов. похоже, это проблема wkhtmltopdf, а не библиотека. – Pouya

1

В моем случае проблема была решена закомментировав следующий CSS:

html, body { 
    overflow-x: hidden; 
} 

Как El Kopyto сказан в одном из комментариев к предыдущему ответу:

Проверьте, не установлено ли это или родительское divs как скрытое. Если это так, измените его на видимое.

В моем случае удаление переливной собственности полностью выполнило эту работу.

Смежные вопросы