2016-10-09 4 views
2

Я использую WeasyPrint для создания PDF-файла в Django. Я могу генерировать PDF от статического HTML-файла, как показано ниже -Создать PDF с WeasyPrint с общим заголовком и нижним колонтитулом

from django.template import Context, Template 
import weasyprint 

with open('static_file.html', 'r') as myfile: 
    html_str = myfile.read() 

template = Template(html_message) 
    context = Context({'some_key': 'some_value'}) 
    rendered_str = template.render(context) 

weasyprint.HTML(string=rendered_str).write_pdf('generated.pdf') 

Но я хочу, чтобы создать PDF, в котором я могу включать в себя общий заголовок/нижний колонтитулы на каждой странице и добавить нумерацию.

Также будет очень полезно, если кто-нибудь сможет рассказать, как включить пользовательский шрифт для создания PDF-файла. Я установил шрифт в ОС (Ubuntu 14.04), но он не работает.

Я много искал в Интернете об этом. Но не удалось найти правильное решение.

ответ

5

Поскольку Weasyprint поддерживает CSS выгружаемого коммуникационный модуль Level 3, простые верхние и нижние колонтитулы (например, нумерация страниц, как вы упомянули) можно осуществить с помощью CSS:

@page { 
    @top-right{ 
     content: "Page " counter(page) " of " counter(pages); 
    } 
} 

Убедитесь, что вы включаете таблицы стилей при визуализации:

HTML(string=rendered_html, 
    base_url=settings.SITE_URL).write_pdf(stylesheets=[CSS(settings.STATIC_ROOT + '/css/pdf_render.css')]) 

Однако, получение более сложных заголовки/колонтитулы для рендеринга может быть более .. комплекс. Некоторые люди предложили способ включения Div элемента в заголовке, что делает только для печати (но я должен признать, что я только был в состоянии получить простые элементы, чтобы правильно сделать с этим методом):

@page { 
    @top-left { 
     content: element(pageHeader); 
    } 
} 
@media print { 
    #divHeader{ 
     position: running(pageHeader); 
    } 
} 

Eсти также другой метод с использованием фиксированных позиций, как показано в этом документе: https://gist.github.com/pikhovkin/5642563

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