Как использовать атрибут frame для таблицы в QTextDocument, даже если он не поддерживается?

Я пытаюсь создать документ используя QtTextdocument:: setHtml функция. Проблема заключается в том, что по ссылке ниже не все атрибуты доступны для использования в html.

http://doc.qt.io/qt-4.8/richtext-html-subset.html

У меня есть следующий HTML, который я хочу напечатать в PDF, используя (QtTextdocument)

<table width=100% frame='box'>
<tr align='left'>
<th>For</th>
<th>Myself</th>
</tr>
<tr align='left'>
<th>Attention</th>
<th>Mother</th>
</table>

HTML создает таблицу с простой рамкой. Проблема в том, что атрибут «frame» не находится в поддерживаемом подмножестве Html для Qt, как указано ссылкой Вот. Тег таблицы поддерживается, но не рамка атрибута.

пожалуйста, обратите внимание что я уже пытался использовать атрибут «border» и установить его в значение «1 | 0», но он также дал границы вокруг ячеек таблицы, что не является тем, что я хочу.

QTextDocument *document;
QPrinter printer;
Qstring html="<table width=100% frame='box'><tr align='left'><th>For</th>"
"<th>Myself</th>"+
"</tr>"+
"<tr align='left'>"+
"<th>Attention</th>"+
"<th>Mother</th>"+
"</table>";
document->setHtml(html);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setPaperSize(QPrinter::A4);
printer.setPageMargins(QMarginsF(15, 15, 15, 15));
printer.setOutputFileName("./Report.pdf");
document->print(&printer);

Когда я проверяю PDF, у таблицы нет внешнего кадра, который я хочу. Кто-нибудь знает способ обойти это? Все, что мне нужно, это черный ящик вокруг стола.

1

Решение

Frame атрибут Table HTML-тег не поддерживается Qt.

Вместо Border поддерживается. Я пробовал с BorderЯ могу видеть границу.

Ссылка ниже содержит список поддерживаемых атрибутов для Table тег. Ищите «Поддерживаемые теги» в ссылке ниже.

http://doc.qt.io/qt-5/richtext-html-subset.html

Вы можете видеть это для Table тег,

Поддерживает следующие атрибуты: border, bgcolor (имена цветов Qt или #RRGGBB), пространство ячеек, заполнение ячеек, ширина (абсолютная или относительная) и высота.

Я попробовал ниже изменить в вашем коде. Я вижу границы.

<table width=100% border = \"2\" >
1

Другие решения

Я решил это следующим образом. Идея заключается в простом нанесении черного холста под белый лист.

Я изменил HTML, чтобы быть следующим

<table width=100% style='background-color:#000;'>
<tr>
<td style='padding:1px '>
<table width= 100% style='background-color:#fff;'>
<tr align='left'>
<th>For</th>
<th>Myself</th>
</tr>
<tr align='left'>
<th>Attention</th>
<th>Mother</th>
</table>
</td>
</tr>
</table>

Теперь у меня есть черная граница 1px вокруг контента, и она очень хорошо отображается в PDF. НАСЛАЖДАТЬСЯ

0

По вопросам рекламы [email protected]