Как отобразить pdf, который был загружен в python

Я взял pdf-файл из Интернета, используя, например,

import requests
pdf = requests.get("http://www.scala-lang.org/docu/files/ScalaByExample.pdf")

Я хотел бы изменить этот код, чтобы отобразить его

from gi.repository import Poppler, Gtk

def draw(widget, surface):
    page.render(surface)

document = Poppler.Document.new_from_file("file:///home/me/some.pdf", None)
page = document.get_page(0)

window = Gtk.Window(title="Hello World")
window.connect("delete-event", Gtk.main_quit)
window.connect("draw", draw)
window.set_app_paintable(True)

window.show_all()
Gtk.main()

Как изменить document =строку для использования переменной pdf, содержащей pdf?

(Я не против использования popplerqt4 или чего-нибудь еще, если это упростит.)

python,pdf,poppler,pdf-rendering,

7

Ответов: 6


2

Все зависит от используемой ОС. Обычно это может помочь:

import os
os.system('my_pdf.pdf')

или же

os.startfile('path_to_pdf.pdf')

или же

import webbrowser
webbrowser.open(r'file:///my_pdf.pdf')

0

Как насчет использования временного файла?

import tempfile
import urllib
import urlparse

import requests

from gi.repository import Poppler, Gtk

pdf = requests.get("http://www.scala-lang.org/docu/files/ScalaByExample.pdf")

with tempfile.NamedTemporaryFile() as pdf_contents:
    pdf_contents.file.write(pdf)
    file_url = urlparse.urljoin(
        'file:', urllib.pathname2url(pdf_contents.name))
    document = Poppler.Document.new_from_file(file_url, None)

0

Попробуйте это и скажите мне, работает ли это:

document = Poppler.Document.new_from_data(str(pdf.content),len(repr(pdf.content)),None)

0

Если вы хотите открыть pdf с помощью Acrobat Reader, то ниже код должен работать

import subprocess
process = subprocess.Popen(['<here path to acrobat.exe>', '/A', 'page=1', '<here path to pdf>'], shell=False, stdout=subprocess.PIPE)
process.wait()

0

Поскольку существует библиотека с именем pyPdf, вы можете загрузить файл PDF с этим. Если у вас возникнут вопросы, пришлите мне messege.

питон, PDF, Poppler, PDF-рендеринг,
Похожие вопросы