【发布时间】:2022-01-11 00:08:10
【问题描述】:
我正在创建一个应用程序来为用户绘制指令。 创建说明的人可以添加多个页面,然后将它们导出为 .pdf。 所有这些都很好,只是我似乎无法获得不同页面之间的链接。
我想添加一个初始页面,该页面将显示所有页面并具有指向它们的链接(目录),并在每个页面上添加一个按钮,该按钮将链接到下一页/上一页。
我目前要导出的是这个:
def __export_page_to_pdf(self):
""" Export the current pages to pdf. . """
printer = QtPrintSupport.QPrinter()
printer.setOutputFormat(QtPrintSupport.QPrinter.PdfFormat)
printer.setOutputFileName("instructions.pdf")
printer.setPageSize(QtGui.QPageSize(self.__page.size, QtGui.QPageSize.Point))
painter = QtGui.QPainter(printer)
for page_number in range(self.__page_count):
self.set_page(page_number)
x_scale = self.__page.size.width() / self.width()
y_scale = self.__page.size.height() / self.height()
painter.scale(x_scale, y_scale)
self.render(painter)
if page_number < self.__page_count - 1:
painter.resetTransform()
printer.newPage()
painter.end()
self.set_page(page_number) 更改当前页面,以便可以呈现请求的页面。 self.set_page(0) 包含带有目录的页面。
所有页面都显示在 QGraphicsScene 中。 对于如何在这些页面之间创建链接的任何提示,我将不胜感激。
【问题讨论】:
-
以这种方式使用 QPrinter 只会创建一系列图像(每页一个)并将它们存储在 pdf 中,因此生成的文件几乎没有内部结构。您需要从 QTextDocument 打印以获取链接,但在 Qt5 的 pdf 支持中存在许多错误,这意味着内部链接无法正常工作 - 请参阅:QTBUG-83458。这意味着您需要使用第三方 pdf 库来获得所需的输出。
标签: pdf hyperlink pyqt5 qgraphicsscene