xhtml2pdf не встраивает Helvetica

Я создаю PDF с xhtml2pdf, используя Django. Отправляю этот PDF на печать, а там говорят, что некоторые шрифты не встраиваются. У меня есть шрифт Helvetica, но я не использовал Helvetica в PDF-файлах.

Здесь у вас есть снимок экрана со свойствами PDF.

введите здесь описание изображения

Как видите, Guilles'ComicFont и TF2Secondary встраиваются правильно, но не в Helvetica.

Здесь у вас есть мое представление, которое генерирует PDF:

def generate_pdf(request, book, order):
    try:
        book = Book.objects.get(pk=int(book))
        order = Order.objects.get(identificador=order, cuento=book)
    except ObjectDoesNotExist:
        raise Http404


    data = {}
    data = ast.literal_eval(order.datos_variables)

    data['order'] = order

    template = get_template(order.book.plantilla_html)
    html  = template.render(Context(data))

    url = '/Users/vergere/dev/media/pdfs/%s.pdf' % order.identificador

    fichero = open(url, "w+b")
    pisaStatus = pisa.CreatePDF(html.encode('utf-8'), dest=fichero, encoding='utf-8')

    fichero.seek(0)
    fichero.close()


    order.url_pdf = '%s.pdf' % order.identificador
    order.contador_libro = numero
    order.codigo_libro = country_code
    order.save()

    return HttpResponseRedirect(reverse('order_single', kwargs={'pedido': order.pk}))

И вот мой HTML:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Background</title>
        <style>
            @page {
                background-image: url("cuento1/img/portada.jpg");
                size: 213mm 216mm;
            }

            @font-face {
              font-family: Helvetica;
              src: url(pdf_generator/helvetica.ttf);
            }
            @font-face {
                font-family: 'Gilles';
                src: url(pdf_generator/cuento1/gilles/gilles.ttf);
                font-weight: normal;
                font-style: normal;
            }
            @font-face {
                font-family: 'Secondary';
                src: url(pdf_generator/cuento1/tf2_secondary/tf2_secondary.ttf);
                font-weight: normal;
                font-style: normal;
            }
            * {
                box-shadow:none !important;
                margin: 0;
                padding: 0;
                text-shadow: none !important;
                font-family: 'Gilles';
            }
            body{
                font-family: 'Gilles';
            }
            p {
                color: #464439;
                display: block;
                font-weight: normal;
                position: absolute;
            }
            .page-1 p, .page-2 p{
                font-family: 'Secondary';
                font-size: 40px;
                line-height: 1.3em;
                position: absolute;
            }
        </style>
    </head>
    <body>
        <pdf:nextpage name="p1" />
        <pdf:nextpage name="p2" />
        <div class="page-6 page-dedicatoria">
            {{order.dedicatoria}} <br /> {{order.de}}
        </div>
        <p>&nbsp;</p>
    </body>
</html>

Кто-нибудь знает, почему используется Helvetica? Или есть способ встроить Helvetica? Я пытаюсь использовать "@font-face", но это не работает.


person Marcos Aguayo    schedule 08.08.2014    source источник


Ответы (1)


Helvetica — один из стандартных шрифтов, который должен быть доступен каждому средству визуализации PDF. Поэтому его не нужно встраивать.

Возможным решением было бы использование другого шрифта без засечек вместо Helvetica. На окнах, например. Ариал. В OSX, например. Helvetica Neue или Avenir. Они очень похожи на Helvetica, но не являются стандартными шрифтами PDF.

В таблице стилей укажите новый шрифт для всех элементов;

* {
    font-family: Avenir;
}
person Roland Smith    schedule 08.08.2014
comment
Люди в типографии говорят, что не могут печатать без всех шрифтов. - person Marcos Aguayo; 08.08.2014
comment
Большинство генераторов PDF имеют возможность встраивать все шрифты. Посмотрите документацию xhtml2pdf. - person Roland Smith; 08.08.2014
comment
Я так и сделал, единственный способ — использовать @font-face, который работает для всех шрифтов, кроме Helvetica. - person Marcos Aguayo; 08.08.2014
comment
Но проблема в том, что Helvetica добавляется автоматически, я не могу изменить Helvetica. (Я не использую Helvetica в своем PDF-файле) - person Marcos Aguayo; 08.08.2014
comment
Попробуйте установить шрифт по умолчанию для всех элементов в таблице стилей. - person Roland Smith; 08.08.2014
comment
Да, проверьте вопрос со стороны HTML: * { box-shadow:none !important; маржа: 0; заполнение: 0; тень текста: нет !важно; семейство шрифтов: «Жиль»; } - person Marcos Aguayo; 08.08.2014
comment
Давайте продолжим обсуждение в чате. - person Marcos Aguayo; 08.08.2014