├── PDFViewer_PyQt6.py ├── README.md ├── myPDFViewer.py ├── myPDFViewer2.py └── test.pdf /PDFViewer_PyQt6.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from PyQt6.QtCore import QUrl 5 | from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget 6 | from PyQt6.QtWebEngineWidgets import QWebEngineView #, QWebEngineSettings 7 | from os import path 8 | 9 | class MainWindow(QMainWindow): 10 | def __init__(self): 11 | super(QMainWindow, self).__init__() 12 | 13 | self.setWindowTitle("PDF Viewer") 14 | self.setGeometry(0, 28, 1000, 750) 15 | 16 | self.webView = QWebEngineView() 17 | self.webView.settings().setAttribute(self.webView.settings().WebAttribute.PluginsEnabled, True) 18 | self.webView.settings().setAttribute(self.webView.settings().WebAttribute.PdfViewerEnabled, True) 19 | self.setCentralWidget(self.webView) 20 | 21 | def url_changed(self): 22 | self.setWindowTitle(self.webView.title()) 23 | 24 | def go_back(self): 25 | self.webView.back() 26 | 27 | if __name__ == '__main__': 28 | 29 | import sys 30 | app = QApplication(sys.argv) 31 | win = MainWindow() 32 | win.show() 33 | if len(sys.argv) > 1: 34 | win.webView.setUrl(QUrl(f"file://{sys.argv[1]}")) 35 | else: 36 | wd = path.dirname(path.abspath(sys.argv[0])) 37 | test_pdf = "test.pdf" 38 | win.webView.setUrl(QUrl(f"file://{wd}/{test_pdf}")) 39 | sys.exit(app.exec()) 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Qt5PDFViewer 2 | PDF Viewer with Pyqt5 and pdfjs 3 | 4 | ### Requirements: 5 | - PyQt5 6 | - python3 7 | - pdf.js 8 | 9 | download the latest stable version of pdf.js from the [PDF JS Page](https://mozilla.github.io/pdf.js/getting_started/#download) 10 | 11 | extract it to the same folder where the script is. 12 | 13 | ### Usage: 14 | 15 | > python3 myPDFViever.py /path/to/pdf_file 16 | 17 | ### using QWebEngineView - myPDFViewer2.py 18 | 19 | PyQt5 can now show PDF with QWebEngineView 20 | 21 | > python3 myPDFViever2.py /path/to/pdf_file 22 | -------------------------------------------------------------------------------- /myPDFViewer.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | import sys 4 | import os 5 | from PyQt5.QtWidgets import QApplication 6 | from PyQt5.QtCore import QUrl 7 | from PyQt5.QtWebEngineWidgets import QWebEngineView 8 | 9 | root = os.path.dirname(sys.argv[0]) 10 | PDFJS = f"file://{os.path.abspath('./web/viewer.html')}" 11 | print(PDFJS) 12 | PDF = f'file://{"%20".join(sys.argv[1:])}' 13 | print("loading PDF:", PDF) 14 | 15 | class Window(QWebEngineView): 16 | def __init__(self): 17 | super(Window, self).__init__() 18 | if len(sys.argv) > 1: 19 | self.load(QUrl.fromUserInput(f'{PDFJS}?file={PDF}')) 20 | else: 21 | self.load(QUrl.fromUserInput(f"{PDFJS}?file=file://{root}/test.pdf")) 22 | 23 | if __name__ == '__main__': 24 | 25 | app = QApplication(sys.argv) 26 | window = Window() 27 | window.showMaximized() 28 | sys.exit(app.exec_()) 29 | 30 | -------------------------------------------------------------------------------- /myPDFViewer2.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from PyQt5.QtCore import QUrl 5 | from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget 6 | from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEngineView 7 | from os import path 8 | 9 | class MainWindow(QMainWindow): 10 | def __init__(self): 11 | super(QMainWindow, self).__init__() 12 | 13 | self.setWindowTitle("PDF Viewer") 14 | self.setGeometry(0, 28, 1000, 750) 15 | self.centralWidget = QWidget(self) 16 | 17 | self.webView = QWebEngineView() 18 | self.webView.settings().setAttribute(QWebEngineSettings.PluginsEnabled, True) 19 | self.webView.settings().setAttribute(QWebEngineSettings.PdfViewerEnabled, True) 20 | self.setCentralWidget(self.webView) 21 | 22 | def url_changed(self): 23 | self.setWindowTitle(self.webView.title()) 24 | 25 | def go_back(self): 26 | self.webView.back() 27 | 28 | if __name__ == '__main__': 29 | 30 | import sys 31 | app = QApplication(sys.argv) 32 | win = MainWindow() 33 | win.show() 34 | if len(sys.argv) > 1: 35 | win.webView.setUrl(QUrl(f"file://{sys.argv[1]}")) 36 | else: 37 | wd = path.dirname(sys.argv[0]) 38 | test_pdf = "test.pdf" 39 | win.webView.setUrl(QUrl(f"file://{wd}/{test_pdf}")) 40 | sys.exit(app.exec_()) -------------------------------------------------------------------------------- /test.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Axel-Erfurt/Qt5PDFViewer/ca74c33df25ad7173491682f8e77e0ad4b8a8a59/test.pdf --------------------------------------------------------------------------------