Python Forum

Full Version: [solved] How to display a pdf-file in a PyQt6 widget
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
I have run the above python script. But I get only blank widget. What additional python packages are to be installed? Thankyou.
You must provide a path to a PDF file.

Example:

python3 script.py path/to/your.pdf
(May-05-2023, 05:49 PM)Axel_Erfurt Wrote: [ -> ]You must provide a path to a PDF file.

Example:

python3 script.py path/to/your.pdf

I provided the full path. May be I did not understand you. Below is my code.
from qtpy.QtCore import QUrl
from qtpy.QtWidgets import QApplication, QMainWindow
from qtpy.QtWebEngineWidgets import QWebEngineView
from os import path
 
class MainWindow(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
 
        self.setWindowTitle("PDF Viewer")
        self.setGeometry(0, 28, 1000, 750)
 
        self.webView = QWebEngineView()
        self.webView.settings().setAttribute(self.webView.settings().WebAttribute.PluginsEnabled, True)
        self.webView.settings().setAttribute(self.webView.settings().WebAttribute.PdfViewerEnabled, True)
        self.setCentralWidget(self.webView)
 
    def url_changed(self):
        self.setWindowTitle(self.webView.title())
 
    def go_back(self):
        self.webView.back()
 
if __name__ == '__main__':
 
    import sys
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    if len(sys.argv) > 1:
        win.webView.setUrl(QUrl(f"file://{sys.argv[1]}"))
    else:
        wd = path.dirname(sys.argv[0])
#        wd = path.dirname(path.abspath(sys.argv[0]))
        print(f"wd: {wd}")      #   wd: E:\MyProjects\PDFviewer_2
        test_pdf = "test.pdf"
        win.webView.setUrl(QUrl(f"file://{wd}/{test_pdf}"))
        
    sys.exit(app.exec())
Please advice.
try this

from qtpy.QtCore import QUrl
from qtpy.QtWidgets import QApplication, QMainWindow
from qtpy.QtWebEngineWidgets import QWebEngineView

class MainWindow(QMainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()

        self.setWindowTitle("PDF Viewer")
        self.setGeometry(0, 28, 1000, 750)

        self.webView = QWebEngineView()
        self.webView.settings().setAttribute(self.webView.settings().WebAttribute.PluginsEnabled, True)
        self.webView.settings().setAttribute(self.webView.settings().WebAttribute.PdfViewerEnabled, True)
        self.setCentralWidget(self.webView)

    def url_changed(self):
        self.setWindowTitle(self.webView.title())

    def go_back(self):
        self.webView.back()

if __name__ == '__main__':

    import sys
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    if len(sys.argv) > 1:
        url = sys.argv[1]
        win.webView.setUrl(QUrl(f"file://{url}"))

    sys.exit(app.exec())
Pages: 1 2