Как отобразить определенный PDF-файл в QPrintPreviewDialog без использования QFileDialog для выбора файла?

Как я могу задать определенное расположение и имя для pdf-файла, генерируемого моим приложением для создания "ценников"?
Изображение к вопросу
  • 6 декабря 2023 г. 16:30
Ответы на вопрос 1
Чтобы отобразить определенный PDF-файл в QPrintPreviewDialog без использования QFileDialog для выбора файла, вы можете использовать QPrinter и QPrintPreviewDialog напрямую. 

Вот пример, который показывает, как отрисовать PDF-файл из определенного расположения:

```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QPrintPreviewDialog, QAction
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import QFileInfo, Qt
from PyQt5.QtPrintSupport import QPrinter


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

        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('PDF Print Preview')
        self.setGeometry(100, 100, 600, 400)

        open_action = QAction('Open PDF', self)
        open_action.triggered.connect(self.open_pdf)
        self.toolbar = self.addToolBar('Open')
        self.toolbar.addAction(open_action)

    def open_pdf(self):
        # Используйте определенное расположение и имя файла для PDF-файла
        file_name = '/path/to/pdf/file.pdf'

        if not QFileInfo(file_name).exists():
            return

        printer = QPrinter(QPrinter.HighResolution)
        printer.setPageSize(QPrinter.A4)
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName(file_name)

        preview_dialog = QPrintPreviewDialog(printer, self)
        preview_dialog.paintRequested.connect(self.print_preview)

        preview_dialog.exec_()

    def print_preview(self, printer):
        # Отрисовываем содержимое файла PDF
        painter = QPainter(printer)
        painter.drawText(10, 20, 'This is a sample PDF content.')
        painter.end()


if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()
```

В этом примере, когда вы нажимаете на действие "Open PDF" в панели инструментов, открывается диалоговое окно предварительного просмотра печати для отображения содержимого PDF-файла из заданного расположения (`/path/to/pdf/file.pdf`). В файле PDF отображается простой текст "This is a sample PDF content." Вы можете заменить это содержимое на свои ценники.

Убедитесь, что у вас установлены библиотеки PyQt5 и PyQt5-sip. Вы также можете изменить размеры окна и инструменты по своему усмотрению.
Похожие вопросы