PyQt5 QPrintPreview не отображает правильную ширину таблицы
Я использую шаблон счета-фактуры в формате HTML, содержащий элемент таблицы. Элемент таблицы имеет стиль атрибута сwidth: 100%
. После рендеринга шаблона с контекстом я хочу просмотреть счет-фактуру в диалоговом окне предварительного просмотра печати. Все работает нормально, кроме таблицы. Он переносит содержимое ячеек, но я хочу, чтобы таблица располагалась по всей странице. Еще одна вещь, о которой стоит упомянуть, это такие атрибуты стиля, как:border
,margin
,text-align
работают, а другим нравится:width
,height
,background-color
не.
Вот шаблон:
<h1 style="text-align: center;">Račun br. {{ id_racun }}</h1>
<hr />
<h3>Datum izdavanja: {{ datum }}</h3>
<h3>Izdao operater: {{ zaposlenik }}</h3>
<hr />
<table style="width: 100%; border-collapse: collapse; border: 2px solid black;" border="1">
<tr>
<td><strong>Šifra</strong></td>
<td><strong>Naziv</strong></td>
<td><strong>Cijena</strong></td>
<td><strong>Popust</strong></td>
<td><strong>Količina</strong></td>
<td><strong>JM</strong></td>
<td><strong>Ukupna cijena</strong></td>
</tr>
{% for stavka in stavke %}
<tr>
<td>{{ stavka[0] }}</td>
<td>{{ stavka[1] }}</td>
<td>{{ stavka[2] }}</td>
<td>{{ stavka[3] }}</td>
<td>{{ stavka[4] }}</td>
<td>{{ stavka[5] }}</td>
<td>{{ stavka[6] }}</td>
</tr>
{% endfor %}
</table>
<hr />
<h3 style="text-align: right;">Popust: {{ popust }} %</h3>
<h3 style="text-align: right;">Ukupno: {{ ukupno }} €</h3>
Вот код, который загружает HTML и предварительный просмотр печати:
def previewDialog(self):
previewDialog = QPrintPreviewDialog()
previewDialog.paintRequested.connect(self.printPreview)
previewDialog.exec_()
def printPreview(self, printer):
htmlDokument = self.HTMLracun
dokument = QTextDocument()
dokument.setHtml(htmlDokument)
dokument.print_(printer)
Вот результат, который я получаю:Диалоговое окно предварительного просмотра печати
Я пробовал использоватьQTextDocument.setDefaultStylesheet("table {width: 100%;}")
иQTextDocument.setDefaultStylesheet("@media print {table {width: 100%;}}")
, и это ничего не дало. Я подумал, что это как-то связано с @media, но не могу найти способ его использовать и протестировать.