Aspose.Words_for_NET 转换 ePub 后, 目录缺失及乱码问题

Aspose.Words_for_NET.24.5.0
环境 .Net 6.0
Visual Studio Code 控制台运行。

实测 Word 转换 ePub 后, 存在以下问题:

ePub目录 缺失:
Aspose.Words 似乎只能根据Word的“样式标题”创建目录,但是很多情况下,Word的目录节点并非全部符合标准的“标题样式”。例如 所提供的样例文件:Word中可以正常显示的目录节点,转换的ePub目录却丢失了(如附图)。
Word 目录区域 具有更好的辨识度和操作性,个人觉得,转换应该基于这个“目录”,而不是“样式标题”。
这只是我的猜测。也可能是我操作不对?还请指教。
ePub目录丢失.png (55.7 KB)

中文字符乱码:
ePub文件内部有2个重要文件:.opf、.ncx,一些主流的相关工具通常将其固定命名为 content.opf、toc.ncx。如果Word文件名是全中文的,Aspose.Words 转换后的 ePub文件,会导致这2个文件名乱码。
如果引用了外部字库,且字库文件名是中文,ePub内的字库文件名也会乱码。(如附图)。
这几个文件名乱码,可能会导致很多无法预料的问题。
ePub内部文件名乱码.png (24.3 KB)

相关代码:

var FontDir =@"fonts\";
FontSettings fontSettings = new FontSettings();
List<FontSourceBase> fontSources = new List<FontSourceBase>(fontSettings.GetFontsSources());
FolderFontSource folderFontSource = new FolderFontSource(FontDir, true);
fontSources.Add(folderFontSource);
FontSourceBase[] updatedFontSources = fontSources.ToArray();
fontSettings.SetFontsSources(updatedFontSources);

Document doc = new Document(sourceFile);
doc.FontSettings = fontSettings;

HtmlSaveOptions saveOptions = new HtmlSaveOptions();
saveOptions.SaveFormat = SaveFormat.Epub;
saveOptions.Encoding = Encoding.UTF8;
saveOptions.NavigationMapLevel = 9;
saveOptions.ExportFontResources = true;

doc.Save(DestFile, saveOptions);

附件提供:
Word文件、字体文件及转换后的ePub文件。

麻烦看下问题出在哪里?也请提供修改后的代码。
测试用文件.zip (2.0 MB)

@aswinrose 3 级标题有不同的样式名称 "Heading 3 "和 “Heading 3 Char”。问题出现在 "Heading 3 Char "样式上。

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

Issue ID(s): WORDSNET-27061

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

作为一种变通方法,您可以为所有标题设置 "标题 3 "样式。请参阅更新后的文件。
测试用文件.zip (279.0 KB)

我将与我们的团队讨论将名称改为问号的问题,然后再回复您。

这个原因 我之前也发现了。但是通过修改标题样式的变通方法,对于我们来说,显然是不可行的。因为我们要处理的文件很多,不可能去做这样的预处理。

期待未来新版可以解决这个问题。

@aswinrose 我们讨论过用问号代替名称的问题。为了给每个环境提供最佳支持,我们可以创建特殊的英文名称。这对您来说是个不错的选择,或者您需要以中文保存文件名?

很多场景下,原始 Word文件是中文名称,要求目标ePub文件保持相同的文件名,而且是大量文件进行批处理。所以,保持中文文件名是必须的。只是需要解决 由此而产生的乱码问题。
关于中文名称:
1,原始 Word文件是中文名称,处理后的目标 ePUB 文件名 需要是中文的。在此需求下:希望 ePub 内部的文件名 不是问号等乱码。

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

Issue ID(s): WORDSNET-27062

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