【发布时间】:2015-11-15 00:27:32
【问题描述】:
我尝试从 QTextDocument 打印 pdf 文件。文档的内容由 setHtml() 设置。 简化示例:
QTextDocument document;
document.setHtml("<h1>My html \304\205</h1>"); // Octal encoded ą
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("cert.pdf");
document.print(&printer);
它在 Windows (msvc) 上无法正常工作。我得到带有“?”的pdf文件代替大多数波兰语字符。它适用于ubuntu。
在 windows 上它制作带有 tahoma 字体嵌入子集的 pdf。如何强制 QPrinter 或 QPrintEngine 嵌入此(或任何其他)字体的更多字符?
【问题讨论】:
-
setHtml的电话非常可疑。请显式创建一个 QString 并使用 qDebug() 转储它,然后将其传递给setHtml。 -
将此文本转储到 qDebug() 会在控制台中得到相同的结果(波兰字母中的问号)。这个八进制编码有问题吗?我从 uic 生成的文件中获取它,当我从代码中设置小部件文本时它可以工作。
-
这是因为
const char *->QString转换可能无法满足您的需求(尤其是在 Qt 4 上)。你在用吗?改用 QString::fromUtf8 有什么不同吗?换成相应的 HTML-escape 怎么样? -
你是对的。谢谢佩佩。 fromUtf8、tr() 和 html 转义序列都有效。