1

我正在尝试使用QtTextdocument:: setHtml函数创建文档。问题是根据下面的链接,并非所有属性都可供我从 html 使用。

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

这是我想做的

我有以下html,我想使用(QtTextdocument)打印到pdf

<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 生成一个带有简单框架的表格。问题是属性“框架”不在 Qt 支持的 Html 子集中,如链接所示。支持表格标签,但不支持属性框架。

请注意,我已经尝试使用属性“border”并将其设置为值“1|0”,但它也在表格单元格周围给出了边框,这不是我想要的。

这是执行此操作的 C++ 代码

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 时,桌子没有我想要的外框。有谁知道解决这个问题的方法?我所需要的只是桌子周围的一个黑盒子。

4

2 回答 2

2

Qt 不支持 HTML 标签的Frame属性。Table

而是Border支持。我试过了Border,我能看到边界。

以下链接具有Table标签支持的列表属性。在下面的链接中搜索“支持的标签”。

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

你可以看到Table标签,

支持以下属性:border、bgcolor(Qt 颜色名称或#RRGGBB)、cellspacing、cellpadding、宽度(绝对或相对)和高度。

我尝试在您的代码中进行以下更改。我看到了边界。

<table width=100% border = \"2\" >
于 2017-06-15T17:30:17.823 回答
0

我通过以下方式解决了它。这个想法只是在一张白纸下应用黑色画布。

我将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 上显示得非常好。请享用

于 2017-06-22T10:23:05.233 回答