¿Cómo establecer los márgenes de QTextDocument y otras propiedades (setHTML, print to pdf)?

Tengo los siguientescertificate Clase para producir documentos pdf a partir de algunas imágenes y datos. Después de configurar las fuentes de imagen, llamogenerate() Funcionar y obtener test.pdf archivo de salida. El documento se crea en base aQTextDocument clase usandosetHtml(html) método.

El problema es que tengo grandes espacios en blanco alrededor del documento, mientras que quiero que el título "INFORMAR" con la imagen del logotipo esté en la parte superior de la página. También me gustaría agregar un borde inferior a la tabla, pero como entiendo, no es compatible con Qt (Subconjunto HTML soportado).

Código 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)
</code>

Nunca antes utilicé html de forma extensiva y nunca trabajé con QTextDocument, y agradecería cualquier consejo sobre cómo controlar los márgenes de los documentos y las propiedades de la tabla.

Otra propiedad relacionada que quiero controlar es la resolución: uso el tamaño de imagen de píxeles y necesito saber los tamaños de página y margen en píxeles.

EDITADO: La pregunta es casi respondida por @mata. Ahora puedo establecer cualquier margen y resolución, pero no entiendo cómo controlar el tamaño de la fuente y la imagen. P.ej. si necesito que una imagen siempre tenga un ancho de 50 mm, y los tamaños de fuente del encabezado html y del texto principal sean visualmente iguales, ¿cómo implementarla?

EDITED2: La última parte se resuelve también. Aquí está el código modificado por @mata, da el mismo resultado para cualquierdpi valor:

<code>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)
...
</code>

Respuestas a la pregunta(1)

Su respuesta a la pregunta