PythonTkinter的PDF查看器
我目前正在寻找在Tkinter应用程序中显示PDF文件的可能性(例如,在框架小部件或类似程序中显示它们) 这个问题已经有解决办法了吗 我已经搜索过了,使用了ddg和其他工具,但没有找到任何相关的东西。我发现的唯一一件事是如何将tk.Canvas的内容打印成PDF格式——有没有办法将PDF加载到画布中?您的搜索关键字是“PythonPDF解析”。谷歌打开这个,然后。也有人认为pdfminer是一个不错的选择,但它比最新的pdfminer版本早了两年。还有用于和的pdfminer版本。 !!! 注意PythonTkinter的PDF查看器,python,pdf,view,tkinter,tk,Python,Pdf,View,Tkinter,Tk,我目前正在寻找在Tkinter应用程序中显示PDF文件的可能性(例如,在框架小部件或类似程序中显示它们) 这个问题已经有解决办法了吗 我已经搜索过了,使用了ddg和其他工具,但没有找到任何相关的东西。我发现的唯一一件事是如何将tk.Canvas的内容打印成PDF格式——有没有办法将PDF加载到画布中?您的搜索关键字是“PythonPDF解析”。谷歌打开这个,然后。也有人认为pdfminer是一个不错的选择,但它比最新的pdfminer版本早了两年。还有用于和的pdfminer版本。 !!! 注意
!!! 这只适用于PYTHON 2!!!! 我目前正在进行python3的更新 viranthas pypdfocr不能与python 3一起正常工作。
要与Python2一起使用,请使用下面的版本 最后,我找到了一个解决方案 使用pypdfocr及其pypdfocrgs库,我调用
pypdfocr.pypdfocr\u gs.PyGs({})。从pdf(pdf文件)生成img\u
检索jpg图像,然后使用PIL从中获取ImageTk.PhotoImage实例,并在代码中使用它们
ImageTk.PhotoImage(_img_file_handle)
我将尽快添加一个适当的示例
编辑:
正如承诺的那样,代码来了
import pypdfocr.pypdfocr_gs as pdfImg
from PIL import Image, ImageTk
import Tkinter as tk
import ttk
import glob, os
root=tk.Tk()
__f_tmp=glob.glob(pdfImg.PyGs({}).make_img_from_pdf("\tmp\test.pdf")[1])[0]
# ^ this is needed for a "default"-Config
__img=Image.open(__f_tmp)
__tk_img=ImageTk.PhotoImage(__img)
ttk.Label(root, image=__tk_img).grid()
__img.close()
os.remove(__f_tmp)
root.mainloop()
编辑:
使用viranthas pypdfocr版本时,Windows 10和pythons子进程的处理中似乎存在一个bug:
# extract from pypdfocr_gs:
def _run_gs(self, options, output_filename, pdf_filename):
try:
cmd = '%s -q -dNOPAUSE %s -sOutputFile="%s" "%s" -c quit' % (self.binary, options, output_filename, pdf_filename)
logging.info(cmd)
# Change this line for Windows 10:
# out = subprocess.check_output(cmd, shell=True)
out = subprocess.check_output(cmd)
# end of extract
2021年,一种在Windows10上对我有效的方式
pip安装tkPDFViewer
然后
#导入tkinter以在python中生成gui
导入操作系统
从tkinter进口*
#导入tkPDFViewer以在gui中放置pdf文件。
#tkPDFViewer库中有
#tkPDFViewer模块。我已经导入为pdf格式
从tkPDFViewer以pdf格式导入tkPDFViewer
#初始化tk
root=Tk()
#设置根窗口的宽度和高度。
根几何(“550x750”)
#从tkPDFViewer创建ShowPdf的对象。
v1=pdf.ShowPdf()
#添加pdf位置、宽度和高度。
v2=v1.pdf_视图(根目录,
pdf_location=r“C:\repositories\dg_ml\dg_ml_models\deliverynote\deliverynote\visualize\tmp\notated\243712_637477949668712907_Scan2021-02-01_174914.pdf”,
宽度=50,高度=100)
#在我的gui中放置Pdf。
v2.pack()
root.mainloop()
谢谢您的建议,terry,但我不想解析它们,我想将它们放入类似于包含zoom的文档视图的tkinter gui中。必须解析.pdf文件中的字节,并将解析的对象转换为可显示的位图图像。您知道是否可以“还原”tk.canvas PostScript功能的过程?我不知道有哪个tk功能可以做到这一点。同样,需要对文件进行解析。可能有一个tcl/tk扩展可以提供帮助,但我从未研究过它们。