2016-04-23 5 views
0

Я пытаюсь сохранить/экспортировать полный результат веб-страницы в PDF с помощью pythonСохранение веб-страницы в формате PDF с использованием Python?

Я создал веб-страницу, содержащую некоторые результаты расчета и раздел комментариев, который сопровождается кнопкой «Экспорт в PDF».

То, что я сделал до сих пор представлены следующим образом:

from flask import Flask, session, redirect, url_for, escape, request, Response 
app = Flask(__name__) 




@app.route('/result', methods=['GET', 'POST']) 
def viewResult(): 
    if request.method == 'POST': 

      if 'export' in request.form: 

        x = "XMLXMLXMLXML" 

        request.headers['Content-Type: application/pdf'] 
        request.headers["Content-Disposition: attachment; filename='x.pdf'"] 

        return x 


      return '' 
else: 
      global result 
    result = 'xml' 
      html = '' 
      html += '<html>' 
      html += '<body>' 
      html += '<p>Result</p>' 
      html += '<a href="http://127.0.0.1:5000/">Back</a>' 
      html += '<div>' 
      html += '<b>Result:</b>' 
      html += '<textarea name="result" readonly>' + result + '</textarea>' 
      html += '<form method="POST">' 
      html += '<br>' 
      html += '<textarea name="content" placeholder="Enter a comment"></textarea>' 
      html += '<p></p>' 
      html += '<input type="submit" name="export" value="Save">' 
      html += '</form>' 
      html += '</div>' 
      html += '</body>' 
      html += '</html>' 
      return html 
if __name__ == "__main__": 
    app.run() 

Я проверил/исследовал несколько методов до сих пор, но ни один, кажется, чтобы заставить его работать в моем случае. Пожалуйста, извините мою логику кодирования. Я не эксперт по python: x

Так что я делаю неправильно здесь?

+0

немного неправильно! Файл не является элементом веб-браузера. Вам нужен элемент html внутри файла в качестве объекта. Может писать как base64 без каких-либо ограничений. – dsgdfg

+0

Благодарим вас за ответ. Но не могли бы вы уточнить дальше? Я не думаю, что понял, что вы имеете в виду. – vana

+0

Ваш вопрос, вероятно, немного широк, поскольку каждый формат экспорта настолько отличается. Вероятно, вам будет лучше ограничивать ваш вопрос конкретным форматом и идти оттуда. – dirn

ответ

1

Рассмотрите возможность использования популярного, с открытым исходным кодом wkhtmltopdf который можно назвать наружно в Python, просто передавая .html файла и имен файлов .pdf. Просто загрузите его исполняемый файл и запустите с ним командные строки. Кроме того, вы можете указать размер страницы (-s A4) и аргументы ориентации (-O landscape). Кроме того, wkhtmltopdf отлично работает с CSS-страницами, такими как page-break-before: always, page-break-inside: avoid !important; и т. Д.

Ниже приведен пример скриншотов с использованием размещенной строки html. Интегрируйте метод в базу кода вашего приложения.

import os 
... 

result = 'xml' 

html = '' 
html += '<html>' 
html += '<body>' 
html += '<p>Result</p>' 
html += '<a href="http://127.0.0.1:5000/">Back</a>' 
html += '<div>' 
html += '<b>Result:</b>' 
html += '<textarea name="result" readonly>' + result + '</textarea>' 
html += '<form method="POST">' 
html += '<br>' 
html += '<textarea name="content" placeholder="Enter a comment"></textarea>' 
html += '<p></p>' 
html += '<input type="submit" name="export" value="Save">' 
html += '</form>' 
html += '</div>' 
html += '</body>' 
html += '</html>' 

# OUTPUT HTML PAGE 
file = open('WebPage.html', 'w') 
file.write(html) 
file.close() 

# OUTPUT PDF PAGE 
os.system('/path/to/wkhtmltopdf /path/to/WebPage.html /path/to/WebPage.pdf') 

HTML файла Web Page HTML

PDF Файл Web Page PDF

+0

Большое спасибо Parfait! Я сейчас проверю это. – vana

Смежные вопросы