Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PythonTkinter的PDF查看器_Python_Pdf_View_Tkinter_Tk - Fatal编程技术网

PythonTkinter的PDF查看器

PythonTkinter的PDF查看器,python,pdf,view,tkinter,tk,Python,Pdf,View,Tkinter,Tk,我目前正在寻找在Tkinter应用程序中显示PDF文件的可能性(例如,在框架小部件或类似程序中显示它们) 这个问题已经有解决办法了吗 我已经搜索过了,使用了ddg和其他工具,但没有找到任何相关的东西。我发现的唯一一件事是如何将tk.Canvas的内容打印成PDF格式——有没有办法将PDF加载到画布中?您的搜索关键字是“PythonPDF解析”。谷歌打开这个,然后。也有人认为pdfminer是一个不错的选择,但它比最新的pdfminer版本早了两年。还有用于和的pdfminer版本。 !!! 注意

我目前正在寻找在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扩展可以提供帮助,但我从未研究过它们。