【发布时间】:2017-03-11 12:45:22
【问题描述】:
使用 Python3 和 Poppler,我可以毫无问题地使用 new_from_file 加载文件,但 new_from_data 是有问题的。这是显然是一个简单测试的代码,因为从文件中读取然后使用 new_from_data 没有意义,因为 new_from_file 可以完美运行,但我无法在此处发布生成 pdf 文件的完整代码。
from gi.repository import Poppler, Gtk
def draw(widget, cr):
# set background.
cr.set_source_rgb(0.7, 0.6, 0.5)
cr.paint()
# set page background
cr.set_source_rgb(1, 1, 1)
cr.rectangle(0,0,800,400)
cr.fill()
page.render(cr)
filepath = "d:/Mes Documents/A5.pdf"
f11 = open(filepath, "r", encoding = "cp850")
data1 = f11.read()
f11.close()
document = Poppler.Document.new_from_data(data1, len(data1), None)
page = document.get_page(0)
print (document.get_n_pages())
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()
可能会发生四种不同的情况:
- 使用非常简单的 pdf(Pdf 参考 13 中的“Hello world”示例),它就可以工作。
- 用普通文件,可能不会出错,但是get_n_pages返回0,get_page(0)返回None
- 或者我可能会得到一个错误:GLib.Error: poppler-quark: PDF document is modified (4)
- 或者程序崩溃
我想知道问题是否可能出在编码参数上,但是我尝试了所有我想到的方法,但没有结果。 我尝试使用“rb”,然后将字节数组转换为字符串:
data1 = "".join(map(data1))
没有结果。
在 Google 上搜索从未返回有效示例
【问题讨论】: