нужен синтаксис css xhtml2pdf (Pisa 3.0) для @page и @frame

#python #css #django #pdf-generation #pisa

#python #css #django #генерация pdf #pisa

Вопрос:

я пробую что-то с xhtml2pdf (он же Pisa 3.0) и django, и у меня проблемы с css
http://www.xhtml2pdf.com/doc/pisa-en.html
очевидно, что в документах выше говорится о доступном css, а также о тегах, специфичных для поставщика.

Если я последую примеру в документах для статических фреймов и сделаю css похожим

 @page{
        margin:0cm;
        @frame header{
            -pdf-frame-content: header;
            height: 3cm;    
        }
        @frame footer{
            -pdf-frame-content: footer;
            bottom: 2cm;
            height: 2cm;
        }
    }

    .main_content{
        padding: 0px
    }
    #header{

        background-color: #02164c;
        font: #FFFFFF;
        width:100%;     
    }
    #footer{    
        width: 100%;            
    }
    .pageBreak{
        page-break-after: always;       
    }
  

Я получаю ошибку в django

Значение исключения:

Набор правил, открывающий ‘{‘ не найден:: (u’@page{nttmargin:’, u’0cm;n t t@заголовок фрейма’)

Расположение исключения: /usr/lib/pymodules/python2.6/sx/w3c/cssParser.py в _parseAtPage, строка 654

похоже, что синтаксический анализатор css квакает на @page.
Мне кажется, что я использую его, как в примерах. Я надеюсь, что кто-нибудь может помочь дать некоторые рекомендации по этому поводу или указать мне на некоторые примеры шаблонов.
Мне также интересно, как использовать теги, специфичные для -pdf-поставщика. я не могу найти документации по этим тегам…

Комментарии:

1. Проверил это по сгенерированному мной pdf-файлу (который выдавал ту же ошибку) единственное, что я смог увидеть, это отсутствие пробела после @page{ — я изменил его на @page { и ваш код работает для меня. Любая помощь?

2. @JamesO — вау. это было потрясающе. с. да, это был пробел, который убивал его. Если вы хотите перенести свой комментарий в answer, я с радостью предоставлю его вам, поскольку я бы ни за что не попробовал это самостоятельно. Кстати, есть какие-либо дополнительные ресурсы для тегов конкретного поставщика и / или тегов @page и @frame?

3. подойдет, рад, что это помогло. Не уверен насчет дополнительных документов для тегов поставщиков, я использовал только те, которые используются в примерах по ссылке выше.

Ответ №1:

@page{ кажется, вызывает ошибку, когда нет пробела перед { изменением на @page { works.