Мне нужно преобразовать HTML в pdf с помощью QTextDocument, но, если я укажу шрифт в html (это то, что мне нужно), результат переноса слов прерван.
Чтобы этот код скомпилировался добавить QT + = printsupport в .pro
Пример:
<code>#include <QGuiApplication>
#include <QPrinter>
#include <QTextDocument>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QPrinter printer(QPrinter::PrinterResolution);
printer.setPaperSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("test.pdf");
QString html;
html.append("<center><pre style=\"font-size:26pt;font-family:DejaVu Sans Mono\"><br />");
html.append("<b>Test 1:</b><br />");
html.append("AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA<br />");
html.append("<em>--------------------</em><br />");
html.append("<b>Test 2:</b><br />");
html.append("BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB<br />");
html.append("<em>--------------------</em><br />");
html.append("
"); QTextDocument document; document.setPageSize (printer.pageRect (). Size ()); document.set Html (html); document.print (& printer); return 0;}
В этом случае стиль прерывает перенос слов.
Пример 2:
#include <QGuiApplication>
#include <QPrinter>
#include <QTextDocument>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QPrinter printer(QPrinter::PrinterResolution);
printer.setPaperSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("test.pdf");
QString html;
html.append("<center><br />");
html.append("<b>Test 1:</b><br />");
html.append("AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA AAAAA<br />");
html.append("<em>--------------------</em><br />");
html.append("<b>Test 2:</b><br />");
html.append("BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB BBBBB<br />");
html.append("<em>--------------------</em><br />");
html.append("</center><br />");
QTextDocument document;
document.setPageSize(printer.pageRect().size());
document.setDefaultFont(QFont("DejaVu Sans Mono", 26));
document.setHtml(html);
document.print(&printer);
return 0;
}
В этом случае он работает отлично.
Я что-то упустил или спецификацию стиля нельзя использовать с переносом слов?
Спасибо.