Проблемы с макетом после обновления WKHTMLTOPDF

Все мои макеты, которые раньше выглядели великолепно, теперь испорчены, после обновления они отображаются с другим шрифтом меньшего размера. WKHTMLTOPDF, Div ширины также рендеринга меньше, чем раньше.

Я попытался изменить флаг dpi в злой, я увидел небольшую разницу, когда установлен dpi: 300, но разница, похоже, не устранила проблему, независимо от того, dpi, У кого-нибудь есть намеки? Я уверен, что проблема связана с изменениями, внесенными в WKHTMLTOPDF,

Эти версии были заблокированы на некоторое время, так как отрендеренные PDF-файлы выглядели великолепно:

  • wicked_pdf (1.1.0)
  • wkhtmltopdf-binary (0.9.9.3) (Отображается с использованием шрифта NimbusSansL Bold & Regular)

У нас есть новая функция, которая требует лучшей обработки разрывов страниц в длинных таблицах. Разрывы страниц работают отлично, теперь, когда мы обновились, но теперь у нас больше проблем, вот новые версии:

  • wicked_pdf (1.2.2)
  • wkhtmltopdf-binary (0.12.4) (Теперь рендеринг с использованием шрифта DejaVuSans, Bold & Regular)

Код для рендеринга:

  respond_to do |format|
    format.html
    format.pdf do
      render pdf: 'report',
             template: 'download_report.pdf.erb',
             show_as_html: params[:debug].present?,
             layout: 'report_application.pdf',
             margin: {
                 top: 5,
                 bottom: 5,
                 left: 5,
                 right: 5
             }
    end
  end

1 ответ

Решение

Добавление zoom вариант, казалось, чтобы исправить большинство моих проблем с макетом. У затронутых div'ов есть и требуется определенная ширина пикселя. Я определил величину масштабирования, изменив размер одного из элементов div до его предыдущего, отрендеренного размера. Разделите новую ширину на старую ширину, чтобы получить масштаб:

  respond_to do |format|
    format.html
    format.pdf do
      render pdf: 'report',
             zoom: 1.27,
             template: 'download_report.pdf.erb',
             show_as_html: params[:debug].present?,
             layout: 'report_application.pdf',
             margin: {
                 top: 5,
                 bottom: 5,
                 left: 5,
                 right: 5
             }
    end
  end
Другие вопросы по тегам