我正在創建一個應用程式來為用戶繪制說明。創建說明的人可以添加多個頁面,然后將它們匯出為 .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)包含帶有 TOC 的頁面。
所有頁面都顯示在 QGraphicsScene 中。我很感激有關如何在這些頁面之間創建鏈接的任何提示。
uj5u.com熱心網友回復:
在ekhumoro做出回應后,我調查了 3rd 方軟體。我尋求的功能可以通過PyMuPdf包實作。采取的步驟是在原始 pdf 中放置文本/影像。然后使用 PyMuPdf 包使用類似于此的代碼段:
import fitz # This is the import name for PyMuPdf. Use pip install PyMuPdf to install
doc = fitz.open("test.pdf")
new_link = {
"kind": 1, # I am unsure what this does but it is required.
"from": fitz.Rect(32, 504, 50, 534), # Locaton of the link.
"page": 1, # The page to link to.
"to": fitz.Point(0, 0), # The location on the new page.
"zoom": 0 # The zoom of the new page.
}
for i in range(doc.page_count): # Use this method of iterating to prevent pages not being edited.
page_link = dict(new_link) # Copy template.
page_link["page"] = i 1 # Update page to link to.
doc[i].insert_link(page_link) # Insert the link.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/377320.html
標籤:pdf 超链接 pyqt5 qgraphicsscene
上一篇:如何替換pdf中的特定影像?
