使用 Aspose.Words 將含有直書文字的docx轉換成圖片時,部分文字會顯示為橫書

我透過 Aspose.Words 並且使用 Aspose.Words.Shaping.HarfBuzz 將 docx 轉換成圖片,程式碼如下:

var doc = new Document(sourceDocxPath, loadOptions)
        {
            LayoutOptions =
            {
                TextShaperFactory = HarfBuzzTextShaperFactory.Instance
            }
        };
        doc.Save(ouputPngPath, new ImageSaveOptions(SaveFormat.Png));

範例 docx 檔案:
物件跑版1.docx (23.4 KB)

物件跑版2.docx (16.8 KB)

轉換出來的部分文字仍然呈現橫書格式,請問是有圖片上的設定可以調整嗎?

Aspose.Words 版本: 25.8.0
Aspose.Words.Shaping.HarfBuzz 版本:25.8.0

@SzuChiChen

在使用 Aspose.Words 將含有直書文字的 DOCX 轉換為圖片時,部分文字顯示為橫書的問題可能與字形處理有關。您已經使用了 HarfBuzz 字形工廠,這是正確的步驟,但有時候,特定的字體或格式可能會影響轉換結果。

以下是解決此問題的具體步驟:

  1. 檢查字體:確保您使用的字體支持直書文字。某些字體可能不完全支持直書格式,導致顯示不正確。

  2. 更新 Aspose.Words:確保您使用的是最新版本的 Aspose.Words,因為新版本可能修復了與字形處理相關的問題。

  3. 調整 LayoutOptions:您可以嘗試調整 LayoutOptions 的其他屬性,看看是否能改善轉換效果。例如,您可以嘗試設置 TextShaperFactoryDefaultTextShaperFactory.Instance,以查看是否有不同的效果。

  4. 測試不同的文檔:如果可能,嘗試使用其他包含直書文字的簡單文檔進行測試,以確定問題是否與特定文檔有關。

以下是您可以嘗試的代碼示例:

var doc = new Document(sourceDocxPath, loadOptions)
{
    LayoutOptions =
    {
        TextShaperFactory = HarfBuzzTextShaperFactory.Instance // 或者嘗試 DefaultTextShaperFactory.Instance
    }
};
doc.Save(outputPngPath, new ImageSaveOptions(SaveFormat.Png));

請按照上述步驟進行操作,這應該能幫助您解決問題。如果您有其他問題或需要進一步的幫助,請隨時告訴我!期待您的回覆。

使用 DefaultTextShaperFactory 則會造成其他部分文字輸出被轉換成橫書

透過螢幕截圖結果 (預期結果):


DefaultTextShaperFactory 輸出結果:


HarfBuzzTextShaperFactory 輸出結果:


@SzuChiChen 感谢您报告此问题。 我们已经在我们的内部问题跟踪系统中打开了以下新工单,并将根据 免费支持政策 中提到的条款提供它们的修复:

Issue ID(s): WORDSNET-28592 ("物件跑版2.docx")

如果您需要优先支持以及直接联系我们的付费支持管理团队,您可以获得 付费支持服务

我只在 "物件跑版 2.docx "文件中看到了这个问题。

下面是 "物件跑版 1.docx "文件的输出结果:

此外,请在测试 Aspose.Words 功能时使用许可证。您可以在此处获取临时许可证 - Policies - Purchase - aspose.com

@vyacheslav.deryushev
您好,感謝您的回應.
我已經申請臨時許可證,並且重新將 docx轉換成 image,但功能變數仍然發生跑版問題

範例檔案:
直書_功能變數.docx (16.9 KB)

預期輸出結果:

Aspose 輸出結果:

@SzuChiChen 是的,这是一份有问题的文件,在上一个帖子中已为其创建了一个票据: WORDSNET-28592.

@vyacheslav.deryushev 仍然有碰到其他類型的直書顯示問題

範例 docx:
input.docx (26.4 KB)

預期結果:

實際輸出結果:

但透過 Aspose.Words 另存出來的 docx 從 MSWord 上看是正常的:
output.docx (19.3 KB)

範例程式碼:

using Aspose.Words;
using Aspose.Words.Shaping.HarfBuzz;

var license = new License();
license.SetLicense("licensePath");

var document = new Document("inputPath")
{
    LayoutOptions = { TextShaperFactory = HarfBuzzTextShaperFactory.Instance }
};
document.Save("outputPngPath", SaveFormat.Png);
document.Save("outputDocxPath", SaveFormat.Docx);```

@SzuChiChen 请使用以下代码和 “new ImageSaveOptions”,以正确保存为图像格式。我这边的 25.8 版本无法重现这个问题。

Document doc = new Document("input.docx");
doc.LayoutOptions.TextShaperFactory = HarfBuzzTextShaperFactory.Instance;
doc.Save("output.png", new ImageSaveOptions(SaveFormat.Png));

@vyacheslav.deryushev

我目前的執行環境如下:

  • .NET:.NET 8
  • Microsoft Word:2010 (版本 14.0.7268.5000)
  • 作業系統:Windows 11 專業版 (23H2),透過 Parallels Desktop 執行
  • 硬體:macOS (Intel)
  • Aspose.Words:25.8.0

有兩個疑問想確認:

  1. 渲染結果 是否會受到作業系統或執行環境的影響而有所差異?
  2. 當我改用 .NET Framework 4.8 執行時,Ole Object 的渲染結果與 Word 相同,但在 .NET 8 下卻不同,這種情況是預期行為嗎?

@SzuChiChen 感谢您报告此问题。 我们已经在我们的内部问题跟踪系统中打开了以下新工单,并将根据 免费支持政策 中提到的条款提供它们的修复:

Issue ID(s): WORDSNET-28599

如果您需要优先支持以及直接联系我们的付费支持管理团队,您可以获得 付费支持服务

@vyacheslav.deryushev 我注意到 WORDSNET-28599 狀態是 Closed ,我想詢問該問題是已經進行修復,還是是預期行為呢?
是否有方式能知道 Issue 的處理細節呢?謝謝!

@SzuChiChen 修复程序将在下个月的 25.10 版本中推出。一旦发布,我们将通过论坛通知您。