2016-07-12 3 views
2

Я использую PDFkit с python для преобразования html-страницы в pdf. В HTML есть только один тег изображения в теле с Src, указывая на полный URL, как:pdfkit не конвертирует изображение в pdf

<html> 
    <body style="margin: 0px;"> 
     <img style="-webkit-user-select: none; cursor: -webkit-zoom-in;" src="https://blah.blah.com" height="768"> 
    </body> 
</html> 

Однако когда я конвертировать HTML в PDF, как это:

pdfkit.from_file(file, 'labels.pdf', configuration=config) 

я получаю пустую страницу с поле с рамкой вместо изображения.

Почему pdfkit не конвертирует изображение?

Я где-то читал, что мы должны предоставить полный путь к изображению, включая имя домена. Но URL-адрес изображения, который я предоставляю, является полным. Тогда что я делаю неправильно?

+0

Я быстро проверил это и есть PDF с образ. Посмотрите, работает ли это без передачи конфигурации 'pdfkit.from_file (файл, 'labels.pdf')'. Если это так, что-то не так с вашей конфигурацией. Может быть, вы используете конфигурацию вместо опций? –

ответ

2

Я использую путь к файлу вместо файла URL в ЦСИ изображения, как:

<img src="D:/image/path/pircure.png"> 

и работать, может быть, вы можете попробовать его.

+0

не удастся, если окружающая среда изменится. поэтому придерживайтесь номенклатуры языка. –

+1

Я нашел лучший способ. Я base64 закодировал изображение и передал его в html. –

1

Я закодировал изображение как строку данных Base64, следуя предложению @Manish Gupta. В Python:

import base64 

def get_image_file_as_base64_data(): 
    with open(FILEPATH, 'r') as image_file: 
     return base64.b64encode(image_file.read()) 

В моем шаблоне jinja2 (я знаю, что этот вопрос не является специфичным для Jinja2, но это то, что я использую):

<img src="data:;base64,{{ get_image_file_as_base64_data() }}"> 
+0

Это более чистый способ для создания шаблона внутри бэкэнда django. благодаря! –