как управлять стилем HTML кода в Qprinter

0

У меня проблема с оформлением html-кода для печати

У меня есть html файл с кодом css

я читаю этот файл так

void Vente::print_Facture()
{
    QString html;
    QFile reportfile("E:/apprendreQt/gestionstock6/includes/reports/facture.html");

    if ( ! reportfile.open(QIODevice::ReadOnly | QIODevice::Text) ) {
        return;
    }
    html = reportfile.readAll();
    replaceHtml(html);

}

затем замените html-функцию заменить некоторые слова в html (ведьма означает, что я использую файл в качестве шаблона и заполняю его данными из базы данных)

void Vente::replaceHtml(QString &html)
{
    // get vente id
    int num_bl = ui->numeroBLlineEdit->text().toInt() ;
    QString requette = "SELECT  produits.designation,produits_en_ventes.qte_out,produits_en_ventes.prix,(produits_en_ventes.qte_out * produits_en_ventes.prix) as montant from ventes left join produits_en_ventes on ventes.vente_id = produits_en_ventes.vente_id left join produits on produits_en_ventes.produit_id = produits.produit_id where ventes.vente_id = :vente_id ";

    if(!m_db->isOpen())
        QMessageBox::critical(this,tr("Inventoria Solution"),m_db->lastError().text()) ;
    else{
        m_query->clear();
        m_query->prepare(requette);
        m_query->bindValue(":vente_id",num_bl);

        if(!m_query->exec())
            QMessageBox::critical(this,tr("Inventoria Solution"),m_query->lastError().text()) ;
        else{
            html = html.replace("%entrepriseNumRegCommerce%","Numéro de registre de commece ")
                    .replace("%entrepriseNumIdenFiscale%","Numéro d'identifiant fiscale")
                    .replace("%numFac%","num facture")
                    .replace("%nomClient%","Nom de client")
                    .replace("%numRegCommerce%","client numéro de registre de commerce")
                    .replace("%numIdenFiscale%","client identifiant fiscale");

            while(m_query->next())
            {
                html +=  "<tr>"

                                 "<td>"+ m_query->value(0).toString() +"</td>"
                                 "<td>"+ QString::number(m_query->value(1).toInt())+"</td>"
                                 "<td>"+ QString::number(m_query->value(2).toInt())+"</td>"
                                 "<td>"+ QString::number(m_query->value(2).toInt())+"</td>"
                                 "</tr>" ;
            }

            html += "</tbody>"
                    "</table>"
                    "<!-- footer of facture -->"
                    "</div>"
                    "</body>"
                    "</html>";
                    print_Html(html);

        }

    }

}

затем я печатаю html

void Vente::print_Html( QString &html)
{
    QPrintDialog printDialog(m_printer, this);
    if (printDialog.exec()) {
        QTextDocument textDocument;
        textDocument.setHtml(html);
        textDocument.print(m_printer);
    }

}

проблема заключается в том, когда появляется диалоговое окно печати и печатается код html, стиль не работает вообще

как я могу управлять положением элемента html, а также стилю их

Теги:
styles
qprinter

1 ответ

0

Ваш html должен быть в поддерживаемых тегах html, и я предлагаю вам использовать разбор XML файлов, а затем заменять и изменять html-теги с помощью методов qdomnode, а также следить за открытием и закрытием тегов html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню