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>&Scaron;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 }} &euro;</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, но не могу найти способ его использовать и протестировать.

0 ответов

Другие вопросы по тегам