Estou tentando exibir um PDF que criei (usando fpdf2) em um aplicativo Pyside6.
Parece haver dois caminhos lá:
Posso usar o QWebEngineView com plugins habilitados, nos quais posso injetar os bytes brutos do PDF, o que funciona. Não é o ideal para mim, pois há muita UI envolvida; gostaria de algo mais limpo.
Ou posso usar QPdfView. Esse widget pega um objeto QPdfDocument do qual ele lê. Infelizmente, QPdfDocument só tem uma função .load() que pega um nome de arquivo. Como estou procurando evitar gravações de disco lá, não estou interessado em salvar temporariamente o arquivo no disco para mostrá-lo na GUI.
Há duas assinaturas na função .load():
Supported signatures:
PySide6.QtPdf.QPdfDocument.load(PySide6.QtCore.QIODevice, /)
PySide6.QtPdf.QPdfDocument.load(str, /)
O problema é o seguinte: não consigo instanciar um QIODevice do Python, então não consigo alimentá-lo com bytes de PDF como um buffer (há uma função .write() que parece interessante). Tentei usar BytesIO (do pacote io), mas não tive sorte.
Existe uma maneira de criar um objeto QPdfDocument a partir de bytes de um arquivo PDF?
Obrigado pela ajuda!