当前位置: 首页 > 面试题库 >

如何在PyQt中使用pdf.js查看器呈现PDF?

耿和韵
2023-03-14
问题内容

我已经尝试在项目中添加pdf.js查看器文件,并且该文件可以在Chrome,Mozilla,Safari等浏览器中使用,但无法在node-webkit和PyQt webkit中加载某些页面。

我正在尝试使用iframe加载文件,如下所示:

<iframe src="/test/?file=/assets/pdf/example.pdf#page=3"> </iframe>

问题答案:

我在Qt论坛上找到了这个话题,thebeast44发布了一段Qt代码来回答您的问题。我对python的翻译如下。

您还需要从作者的原始代码中解压缩res文件夹,我认为他只是修改了查看器…我还在此处附加了代码。

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4 import QtNetwork
from PyQt4 import QtWebKit


class PDFViewer(QtWebKit.QWebView):
    pdf_viewer_page = 'res/pdf-viewer.html'

    def __init__(self, parent=None):
        super().__init__(parent)
        self.settings = QtWebKit.QWebSettings.globalSettings()
        self.settings.setAttribute(QtWebKit.QWebSettings.LocalContentCanAccessFileUrls, True )
        self.settings.setAttribute(QtWebKit.QWebSettings.LocalContentCanAccessRemoteUrls, True )
        self.settings.setAttribute(QtWebKit.QWebSettings.DeveloperExtrasEnabled, True )
        nam = QtNetwork.QNetworkAccessManager()
        page = QtWebKit.QWebPage(self)
        page.setNetworkAccessManager(nam)
        self.setPage(page)
        self.loadFinished.connect(self.onLoadFinish)
        self.setUrl(QtCore.QUrl(self.pdf_viewer_page))

    def onLoadFinish(self, success):
        if success:
            self.page().mainFrame().evaluateJavaScript("init();")


if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    viewer = PDFViewer(parent=None)
    viewer.show()
    sys.exit(app.exec_())


 类似资料:
  • 问题内容: 我知道与此类似的问题:Pdf.js:使用base64文件源而不是url呈现pdf文件。Codetoffel很好地回答了这个问题,但是我的问题不同之处在于,通过对我的WebAPI实现的RESTful调用来检索我的PDF。让我解释… 首先,这是使用PDF.JS通过URL打开PDF的基本方法: 这很好用,但是我正在使用Angular及其服务通过我的RESTful Web API来请求PDF。

  • 本文向大家介绍如何使用PHP Embed SAPI实现Opcodes查看器,包括了如何使用PHP Embed SAPI实现Opcodes查看器的使用技巧和注意事项,需要的朋友参考一下 PHP提供了一个Embed SAPI,也就是说,PHP容许你在C/C++语言中调用PHP/ZE提供的函数。本文就通过基于Embed SAPI实现一个PHP的opcodes查看器。 首先,下载PHP源码以供编译, 我现

  • 问题内容: 我在Ionic App中显示了带有pdf.js的pdf文件。我不使用viewer.js和viewer.html,因为我需要完全不同的布局。现在,我有一个自定义搜索栏,我想突出显示pdf文件中的术语。我可以调用一个函数来执行此操作吗? 我正在像这样渲染文件: HTML: 问题答案: 现在我找到了解决方案! 搜索字词: 而且我必须导入viewer.js。 我在问题中发布的代码不再需要。PD

  • 问题内容: 在我的应用程序中,我将收到一个字节流,并将其转换为手机内存中的pdf文件。如何将其渲染为pdf?并在活动中显示? 问题答案: 某些手机​​(例如Nexus One)预先安装了Quickoffice版本,因此将文件保存到SD卡后,发送适当的Intent可能很容易。

  • 问题内容: 假设您位于用户控制器中,并且想要获取显示请求的json响应,那么可以在您的views / users /目录中创建一个名为show.json的文件,并在用户之后#show操作完成后,它将呈现文件。 当前,您需要执行以下操作: 但是,如果您可以创建一个show.json文件,它会像这样自动呈现,那就太好了: 这将为我节省大量的痛苦,并且会消除我在控制器中渲染json时得到的那种可怕的肮脏

  • 问题内容: 我读了这篇文章《如何真正地,真正地使用QThreads》。完整说明,它说而不是子类qthread和重新实现run(),应使用moveToThread(QThread *)使用moveToThread将QObject推送到QThread实例上 这是C ++示例,但我不知道如何将其转换为python代码。 我一直在使用这种方法来生成qthread,但是如您所见,它使用的是不推荐的方式。我如