c – QPrinter无法正确设置HTML页面样式以在PDF文档中呈现图像
发布时间:2020-12-16 03:46:59 所属栏目:百科 来源:网络整理
导读:我想创建一个具有正确样式 HTML的PDF文档.这就是我想要的: QTextDocument *doc = new QTextDocument();const char* s1 = "htmlheadstylebody { font-family: sans-serif;}.note-atomic { background: rgb(242,242,242); width: 1000px; margin: 5px auto; b
我想创建一个具有正确样式
HTML的PDF文档.这就是我想要的:
QTextDocument *doc = new QTextDocument(); const char* s1 = "<html><head><style>body { font-family: sans-serif;}.note-atomic { background: rgb(242,242,242); width: 1000px; margin: 5px auto; border: 1px solid grey; border-radius: 8px;padding: 5px;}</style></head><body><div class = 'note-atomic'>Hi</div><img src = '/Users/attitude/Desktop/RnSghvV.png' width='400' height='300' /></body></html>"; doc->setHtml(QString::fromStdString(s1)); QPrinter *printer = new QPrinter(); printer->setOutputFileName("/Users/attitude/Desktop/fool.pdf"); printer->setOutputFormat(QPrinter::PdfFormat); QPainter *painter = new QPainter(); painter->begin( printer ); doc->drawContents(painter,printer->pageRect().translated( -printer->pageRect().x(),- printer->pageRect().y() )); doc->print(printer); const char* s2 = "<html><body><div>Bye</div></body></html>"; doc->setHtml(QString::fromStdString(s2)); printer->newPage(); doc->drawContents(painter,- printer->pageRect().y() )); doc->print(printer); painter->end(); 我希望PDF有两页 – 第一页有文字Hi,下一页和最后一页有文字再见.第一个页面样式显示在具有相同标记的HTML页面中: 但是,PDF的第一页出现的内容完全搞砸了: 如何让它看起来像预期的那样? 我正在HTML文档中尝试的图像:http://imgur.com/RnSghvV 平台 – Qt 5.3.1,32位. OS X Yosemite. 解决方法
这是QTextDocument.它呈现了丰富的文本(它不是HTML CSS).
您可以在http://doc.qt.io/qt-5/richtext-html-subset.html上检查的可用属性和元素(例如,p或div没有css属性边框). 如果你把你的html代码放到QTextEdit中,你也可以看到它在Qt Designer中的外观. 为了呈现HTML,您可以使用QWebView(http://doc.qt.io/qt-5/qwebframe.html#print) webview->机框() – >打印(打印机); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |