Comment définir QTextDocument marges et d'autres propriétés (setHTML, imprimer au format pdf)?

J'ai le texte suivant certificate classe pour la production de document pdf de certaines images et de données. Après le réglage de sources d'image, je l'appelle generate() fonction et obtenir de test.pdf fichier de sortie. Le document est créé sur la base QTextDocument classe à l'aide de setHtml(html) méthode.

Le problème est que j'ai d'énormes espaces blancs autour du document, alors que je veux le titre de "RAPPORT" avec l'image du logo pour être sur le haut de la page. Je tiens également à ajouter de la bordure inférieure de la table, mais ce que je comprends, il n'est pas pris en charge par Qt (HTML pris en charge sous-ensemble).

Python3 code:

class certificate:

def __init__(self):
    self.logo = None
    pdffile = 'test.pdf'
    self.histogram = None
    self.printer = QPrinter()
    self.printer.setPageSize(QPrinter.Letter)
    self.printer.setOutputFormat(QPrinter.PdfFormat)
    self.printer.setOutputFileName(pdffile)

def generate(self):
    document = QTextDocument()
    html = ""
    html += ('<head><title>Report</title><style></style></head>'
                 '<body><table width="100%"><tr>'
                    '<td><img src="{}" width="30"></td>'
                    '<td><h1>REPORT</h1></td>'
                 '</tr></table>'
                 '<p align=right><img src="{}" width="300"></p>'
                 '<p align=right>Sample</p></body>').format(self.logo, self.histogram)
    document.setHtml(html)
    document.print_(self.printer)

Je n'ai jamais beaucoup utilisé le html avant et n'a jamais travaillé avec QTextDocument, et il serait souhaitable que des conseils sur la façon de contrôler les marges du document et les propriétés de la table.

Autres biens liés à la je veux de contrôle de la décision - je utiliser les pixels taille de l'image et de la nécessité de connaître la page et la marge de tailles en pixels.

ÉDITÉ: La question est presque répondu par @mata. Je peux maintenant les marges et la résolution, mais ne comprends pas comment à l'image de contrôle et les tailles de police. E. g. si j'ai besoin d'une image est toujours de 50 mm de large, et d'en-tête html et texte principal tailles de police sont visuellement le même: comment la mettre en œuvre?

EDITED2: La dernière partie est résolu aussi. Voici code modifié par @mata, il donne le même résultat pour un dpi valeur:

dpi=96

document = QTextDocument()
html = """
<head>
    <title>Report</title>
    <style>
    </style>
</head>
<body>
    <table width="100%">
        <tr>
            <td><img src="{0}" width="{1}"></td>
            <td><h1>REPORT</h1></td>
        </tr>
    </table>
    <hr>
    <p align=right><img src="{2}" width="{3}"></p>
    <p align=right>Sample</p>
</body>
""".format('D:\Documents\IST Projects\diashape\docbook\Installation\images\istlogo_medium.png',
              40*dpi/96, 
              'D:\Documents\IST Projects\diashape\docbook\Installation\images\istlogo_medium.png', 
              200*dpi/96)

document.setHtml(html)

printer = QPrinter()
font = QFont()
font.setPointSize(12*dpi/96)
document.setDefaultFont(font)
printer.setResolution(dpi)
...
InformationsquelleAutor Katya | 2012-04-24