gpt4 book ai didi

c++ - QPrinter 无法正确设置 HTML 页面样式以在 PDF 文档中呈现图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:47 24 4
gpt4 key购买 nike

我想创建一个具有正确样式的 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().translated( -printer->pageRect().x(), - printer->pageRect().y() ));

doc->print(printer);
painter->end();

我希望 PDF 有 2 页 - 第一页包含文本 Hi,下一页也是最后一页包含文本 Bye。第一个页面的样式就像它出现在具有相同标记的 HTML 页面中一样:

enter image description here

但是,PDF 的第一页出现了完全困惑的内容:

enter image description here

如何让它看起来像预期的那样?

我在 HTML 文档中尝试的图像:http://imgur.com/RnSghvV

平台 - Qt 5.3.1,32 位。 OS X 优胜美地。

最佳答案

这是QTextDocument。它呈现富文本(它不是 HTML + CSS)。

您可以在 http://doc.qt.io/qt-5/richtext-html-subset.html 上查看的可用属性和元素(例如,pdiv 没有 css 属性 border)。

如果将 html 代码放入 QTextEdit,您还可以在 Qt Designer 中看到它的外观。

要呈现 HTML,您可以使用 QWebView ( http://doc.qt.io/qt-5/qwebframe.html#print )

webview->mainFrame()->print(打印机);

关于c++ - QPrinter 无法正确设置 HTML 页面样式以在 PDF 文档中呈现图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35138448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com