QT中使用HTML格式导出PDF文件

目录

  • QT中使用HTML格式原因
  • 如何使用HTML导出PDF文件
  • HTML中的语法

QT中使用HTML格式原因

在开发时需要将放入的图片导出的PDF,而一般的方式只能将文字保存,保存不了图片格式的内容。HTML格式广泛运用于数据的存储、使用以及格式转换中,这里使用HTML是为了将QTextEdit中的富文本导出大PDF。通过QTextEdit中的toHtml()函数获取QTextEdit中的内容,如:ui->textEdit->toHtml().toUtf8()。获取的内容格式是HTML格式,通过html可以转换成PDF格式。

如何使用HTML导出PDF文件

  1. 使用QPrinter类定义对象,然后通过setOutputFormat定义转成的是PDF格式的文件,setOutputFileName定义转成PDF文件的文件名。
  2. 使用QTextDocument类定义对象,通过setHtml、print函数将html转换成PDF
    QString pdfname = "E:/htmltopdf.pdf";
    QPrinter printer;
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName(pdfname);
    QTextDocument document;
    document.setHtml(html);		//注:html是QTextEdit控件中获取的html格式内容
    document.print(&printer);
    document.end();

HTML中的语法

主要的几个语法点:

  1. html是以 开头, 结尾。每组信息都是成对出现的
  2. 中的内容不显示在PDF中,只有当鼠标在PDF文档上点击标题时才会显示<title>后面的内容</li> <li>h1~h6第不同的标题格式,主要是字体大小不同。hr是绘制一条横线</li> <li>在开始是需要设置PDF格式颜色,好像不设置会导致不显示内容的情况</li> <li>创建表格用table属性,绘制table表格时 border表示线宽,cellspacing表示单元格之间的空隙,如果不设置默认为1,就会用一只1px宽的笔绘制table边框,有点难看,所以建议设置cellspacing为0</li> <li>html中可以使用占位符,但是要注意添加\"。</li> </ol> <pre><code class="prism language-c"> <span class="token keyword">void</span> Widget<span class="token operator">::</span><span class="token function">on_pushButton_clicked</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> QString textEdit_html <span class="token operator">=</span> ui<span class="token operator">-></span>textEdit<span class="token operator">-></span><span class="token function">toHtml</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toUtf8</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> QString textEdit_m <span class="token operator">=</span> ui<span class="token operator">-></span>textEdit<span class="token operator">-></span><span class="token function">toPlainText</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//html添加标题</span> QString html <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span> html <span class="token operator">+=</span> <span class="token string">"<html>"</span><span class="token punctuation">;</span> html <span class="token operator">+=</span> <span class="token string">"<head>"</span><span class="token punctuation">;</span> html <span class="token operator">+=</span> <span class="token string">"<title> 这是PDF不显示内容直到鼠标靠近 "; //title属性内容不显示,当鼠标放到上面时显示title中的内容 html += ""; //head 中的内容不显示 html += ""; //PDF背景颜色需要设置,否则不能显示后面的字体内容 html += "

    测试HTML转成PDF文档

    "
    ; //h1~h6 字体是限定的 html += "

    第二行标题

    "
    ; html += "

    序号 "; html += "

    ";// cellspacing 单元格之间的空间,cellpadding 属性规定单元边沿与其内容之间的空白 html +="";//html += ""; html +=""; html +=""; html +=""; QString str3 =QString(" %1 ").arg("日期日期"); html +=""; html +=""; html +=""; html +="
    调试任务"; QString str1 = QString(" %1 ").arg("调试任务"); //html += "" + str1 + ""; //line-height行高,color字体颜色 html += "" + str1 + ""; html += " "; html += "
    治疗室序号 " + str3 + "
    "
    ; html += ""; html +=""; html +=""; html +=""; QString str2 =QString(" %1 ").arg("日期"); html +=""; html +=""; html +=""; html +="
    治疗室序号 " + str2 + "
    "
    ; html += ""; html +=""; html +=""; html +="
    " +textEdit_html + ""; html += "
    "
    ; html += ""; qDebug()<< textEdit_html << endl; qDebug()<< html << endl; qDebug()<< textEdit_m << endl; QString pdfname = "E:/testhtmlpdf.pdf"; QPrinter printer; printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(pdfname); QTextDocument document; //QString html = saveHtmlToPDFgld(); //document.setHtml(html); document.setHtml(html); document.print(&printer); document.end(); }

    QT中使用HTML格式导出PDF文件_第1张图片

你可能感兴趣的:(QT,html,qt,ui)