xhtml2pdf отлично подходит для создания простого PDF-файла в App Engine.
Но теперь мне нужно добавить собственный шрифт в сгенерированный PDF-файл, и я не могу найти для этого простого решения.
Я добавил этот CSS в HTML для преобразования в PDF:
@font-face {
font-family: OpenSans;
src: url("http://mydomain/fonts/Open-Sans-regular.ttf");
}
body {
font-family: OpenSans;
}
Что дает эту ошибку:
File "[..]/xhtml2pdf/util.py", line 613, in getNamedFile
self.tmp_file = tempfile.NamedTemporaryFile()
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist/tempfile.py", line 61, in PlaceHolder
raise NotImplementedError("Only tempfile.TemporaryFile is available for use")
NotImplementedError: Only tempfile.TemporaryFile is available for use
tempfile
не поддерживается GAE, поэтому я попытался заменить tempfile.NamedTemporaryFile()
, создав временный файл в GCS следующим образом:
self.tmp_file = gcs.open('/gcs_bucket_temp/temp_file',
'w',
retry_params=gcs.RetryParams(backoff_factor=1.1))
но это создает критические изменения, которые трудно исправить: xhtml2pdf делает много обращений на чтение к временному файлу в ttfonts.py
(например, ttfonts.py:321 unpack('>L',self._ttf_data[self._pos - 4:self._pos])[0]
), что кажется трудным для переноса для работы с файлом GCS.
Кто-нибудь смог создать PDF-файлы с помощью xhtml2pdf в App Engine с пользовательскими шрифтами?