簡體   English   中英

自 Qt 6.0.0 以來,QPdfWriter 未正確嵌入標准 fonts

[英]QPdfWriter not embedding standard fonts properly since Qt 6.0.0

自從切換到 QT 6.0.0 后,我遇到了 QPdfWriter 的問題。 每次我嘗試打印文本時,都無法從各種 pdf 閱讀器(甚至 Adobe 閱讀器)加載嵌入的字體。 我在 output 上也沒有收到任何錯誤或任何其他內容。

QPdfWriter writer("C:/Users/GGG/Desktop/lol.pdf");
writer.setResolution(300);
writer.setPageSize(QPageSize(QPageSize::A4));
writer.newPage();
QPainter painter;
painter.begin(&writer);
painter.drawText(600,600,"Hello, this is a test");
painter.end();

我的嘗試:

  1. 檢查文檔和互聯網 -> 沒有發現任何有用的東西
  2. 讀出字體(有一個嵌入,但有問題)
  3. 將 QPainter 的字體更改為“Calibri”
  4. 檢查字體是否可用db.hasFamily("Calibri"); (返回值=真)
  5. 檢查顯卡驅動程序 -> 安裝正確,沒有可用的更新。
  6. 使用 Qt 5.15.2(在這兩種情況下為 MinGW64)重建 -> 字體已正確嵌入。 但是如果我回到 Qt 版本 6.0.0 就消失了
  7. Checked my QT components -> I have installed for Qt 6.0.0: MinGW 8.1.0 64Bit , Sources , Qt 5 compatibility Module , Qt Shader Tools , Qt Debug Information Files .
  8. 嘗試與打印 Pdf 文件的 QPrinter 相同 - 相同的行為。

仍然不知道是什么導致了這種行為。 有沒有人遇到同樣的錯誤或有解決方案?

關於我的系統的信息:
Windows 10, 64bit - 已安裝 fonts
Qt 創建者 4.14.0 - MinGW64 與 Qt 6.0.0

最后,在對其他論壇如 forum.qt.io 進行研究后,我發現這可能是一個錯誤。 已經打開了一個錯誤報告-> https://bugreports.qt.io/browse/QTBUG-89727


編輯:原來這是一個錯誤 - 現在已修復。 正如錯誤修復者所寫:

非常好的和微妙的錯誤 - 容器大小從 int32_t 更改為 int64_t 並且字體序列化只是使用 QByteArray::size() 而不進行強制轉換。

此處修正錯誤: https://codereview.qt-project.org/c/qt/qtbase/+/329442

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM