Джанго с Weasyprint на Azure

У меня есть приложение Django, работающее в Azure через WebApps. Для создания PDF-файлов я использую Weasyprint. Развертывание этого в Azure завершается неудачно из-за:

File ".\myapp\views.py", line 19, in <module>
    from weasyprint import HTML
  File "D:\home\python364x64\lib\site-packages\weasyprint\__init__.py", line 375, in <module>
    from .css import preprocess_stylesheet  # noqa
  File "D:\home\python364x64\lib\site-packages\weasyprint\css\__init__.py", line 29, in <module>
    from . import computed_values
  File "D:\home\python364x64\lib\site-packages\weasyprint\css\computed_values.py", line 16, in <module>
    from .. import text
  File "D:\home\python364x64\lib\site-packages\weasyprint\text.py", line 18, in <module>
    import cairocffi as cairo
  File "D:\home\python364x64\lib\site-packages\cairocffi\__init__.py", line 41, in <module>
    cairo = dlopen(ffi, 'cairo', 'cairo-2')
  File "D:\home\python364x64\lib\site-packages\cairocffi\__init__.py", line 38, in dlopen
    raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
OSError: dlopen() failed to load a library: cairo / cairo-2

Это экземпляр Windows работает. У меня были некоторые проблемы с установкой всех необходимых мне пакетов python - т.е. cairocffi. Но теперь я, наконец, справился с этим, используя расширение python3.6.4 (x64).

У меня установлены следующие пакеты через pip/wheel:

--find-links wheelhouse
cairocffi==0.8.0
CairoSVG==2.1.3
cffi==1.11.5
cssselect2==0.2.1
defusedxml==0.5.0
Django==2.0.3
html5lib==1.0.1
pdfrw==0.4
Pillow==5.0.0
pycparser==2.18
Pyphen==0.9.4
pytz==2018.3
six==1.11.0
tinycss2==0.6.1
WeasyPrint==0.42.2
webencodings==0.5.1

В Интернете я не нашел ничего, касающегося проблем с Каиром на Лазурном. Кто-нибудь может помочь? Спасибо!

ОБНОВЛЕНИЕ Каир сейчас работает, и PDF генерируется. Но шрифты не доступны...

Возможно, у кого-то тоже есть проблема с Каиром. Вот как я получил это работает:

Я скачал пакет gtk + отсюда пакет gtk +

Загрузил zip и распаковал его в D:\home\gtk\

Создал новую папку D:\home\SiteExtensions\gtkExtension\ и добавил applicationHost.xdt со следующим содержимым, чтобы добавить папку bin пакета gtk в переменные PATH:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
   <system.applicationHost>
     <sites>
       <site name="%XDT_SCMSITENAME%" xdt:Locator="Match(name)">
         <application path="/gtk"  applicationPool="%XDT_APPPOOLNAME%" xdt:Transform="Insert">
          <virtualDirectory path="/" physicalPath="%XDT_EXTENSIONPATH%" />
        </application>
      </site>
    </sites>
  </system.applicationHost>
  <system.webServer>
    <runtime xdt:Transform="InsertIfMissing">
      <environmentVariables xdt:Transform="InsertIfMissing">
        <add name="PATH" value="%PATH%;%HOME%\gtk\bin\;" />
      </environmentVariables>
    </runtime>
  </system.webServer>
</configuration>

Теперь генерация PDF через Weasyprint работает. Но шрифты не загружены... Я просто получаю пустые поля вместо символов.

0 ответов

Другие вопросы по тегам