Como definir margens QTextDocument e outras propriedades (setHTML, imprimir em pdf)?

Eu tenho o seguintecertificate classe para produzir documentos em PDF com algumas imagens e dados. Depois de definir fontes de imagem, eu chamogenerate() função e obter arquivo de saída test.pdf. O documento é criado com base emQTextDocument classe usandosetHtml(html) método.

O problema é que tenho enormes espaços em branco ao redor do documento, enquanto quero que o título 'REPORT' com a imagem do logotipo esteja no topo da página. Eu também gostaria de adicionar borda inferior para a tabela, mas como eu entendo, não é suportado pelo Qt (Subconjunto HTML Suportado).

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>

Eu nunca usei extensivamente o html antes e nunca trabalhei com o QTextDocument, e gostaria de receber conselhos sobre como controlar as margens do documento e as propriedades da tabela.

Outra propriedade relacionada que desejo controlar é a resolução - uso o tamanho da imagem em pixels e preciso saber os tamanhos de página e margem em pixels.

EDITADO: A pergunta é quase respondida por @mata. Eu posso definir agora todas as margens e resolução, mas não entendo como controlar a imagem e os tamanhos das fontes. Por exemplo. se eu precisar que uma imagem tenha sempre 50 mm de largura, e os tamanhos de fonte do cabeçalho e do texto principal em html sejam visualmente os mesmos - como implementá-la?

EDITADO2: A última parte está resolvida também. Aqui está o código modificado por @mata, ele dá o mesmo resultado para qualquerdpi 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>

questionAnswers(1)

yourAnswerToTheQuestion