Sziasztok,
A kérdés egyszerű: miért nem működik a következő kód?
from reportlab.pdfgen import canvas
from io import BytesIO
from PyQt6.QtCore import QBuffer, QIODevice
from PyQt6.QtPdf import QPdfDocument
from PyQt6.QtPdfWidgets import QPdfView
from PyQt6.QtWidgets import QApplication, QVBoxLayout, QWidget
def create_pdf_in_qbuffer():
pdf_buffer = BytesIO()
c = canvas.Canvas(pdf_buffer)
c.drawString(100, 750, "Hello, ReportLab in QBuffer!")
c.save()
pdf_buffer.seek(0)
# Save for debugging
with open("debug_output.pdf", "wb") as f:
f.write(pdf_buffer.getvalue())
qbuffer = QBuffer()
qbuffer.open(QIODevice.OpenModeFlag.WriteOnly)
qbuffer.write(pdf_buffer.read())
qbuffer.close()
qbuffer.open(QIODevice.OpenModeFlag.ReadOnly)
return qbuffer
def create_qpdfdocument_from_qbuffer(qbuffer):
if qbuffer.size() == 0:
print("Error: QBuffer is empty.")
return None
pdf_document = QPdfDocument(None)
load_status = pdf_document.load(qbuffer)
if load_status != QPdfDocument.Status.Ready:
print("Failed to load PDF document. Status:", load_status)
return None
return pdf_document
def main():
app = QApplication([])
qbuffer = create_pdf_in_qbuffer()
pdf_document = create_qpdfdocument_from_qbuffer(qbuffer)
if pdf_document is None:
print("Error: Could not create QPdfDocument")
return
pdf_view = QPdfView()
pdf_view.setDocument(pdf_document)
window = QWidget()
layout = QVBoxLayout(window)
layout.addWidget(pdf_view)
window.setWindowTitle("QPdfDocument from QBuffer (Qt6)")
window.resize(800, 600)
window.show()
app.exec()
if __name__ == "__main__":
main()
- 140 megtekintés
Hozzászólások
Mert valami nem jó benne.
Mármint legalább vmi arról, hogy mi történik?
- A hozzászóláshoz be kell jelentkezni
Bufferből (nem lemezre mentett fájlból) kellene beolvasson egy generált PDF-et. Ez a része nem működik.
Minden hulla a Mount Everesten valamikor egy nagyon motivált ember volt.
- A hozzászóláshoz be kell jelentkezni
A nem működik gondolom azt jelenti, dob egy exception-t. Ha esetleg bemásolod stacktrace-estül, az sokat tud segíteni.
- A hozzászóláshoz be kell jelentkezni
Közben megtaláltam a hibát...
pdf_view = QPdfView(None)
Hiányzott a "None"...
Habár érdekes, ha itt a return-t nem kommentelem ki akkor nem fut le:
if load_status != QPdfDocument.Status.Ready:
print("Failed to load PDF document. Status:", load_status)
return None
Kösz a segítséget!
Minden hulla a Mount Everesten valamikor egy nagyon motivált ember volt.
- A hozzászóláshoz be kell jelentkezni