PDF合并、书签创建及目录生成时,书签的中文名字出现部分乱码和缺失及无法跳转

以下为原代码,文件路径修改可测试:
List list = new List {
@“C:\Users\wgewf_zomh3mr\Desktop\324\试剂领用流程.pdf”,
@“C:\Users\wgewf_zomh3mr\Desktop\324\CHINET中国细菌耐药监测网技术方案(2022年更新版)2022-1-18.pdf”
};
Document document = new Document();
List bookmarkPageIndices = new List(); //存放书签链接页面
List bookmarkItems = new List();
int currentPage = 1;
foreach (var item in list)
{
Document tempDoc = new Document(item);
for (int i = 1; i <= tempDoc.Pages.Count; i++)
{
document.Pages.Add(tempDoc.Pages[i]);
}
string bookmarkTitle = Path.GetFileNameWithoutExtension(item);
OutlineItemCollection bookmark = new OutlineItemCollection(document.Outlines)
{
Title = bookmarkTitle,
Action = new GoToAction(document.Pages[currentPage])
};
document.Outlines.Add(bookmark);
bookmarkPageIndices.Add(currentPage);
bookmarkItems.Add(Path.GetFileNameWithoutExtension(item));
currentPage += tempDoc.Pages.Count;
}
Aspose.Pdf.Page tocPage = document.Pages.Insert(1);
TocInfo tocInfo = new TocInfo();
TextFragment title = new TextFragment(“目录”)
{
TextState = { FontSize = 20, FontStyle = FontStyles.Bold, Font = FontRepository.FindFont(“SimSun”) }
};
title.TextState.Font.IsEmbedded = true;
tocInfo.Title = title;
tocPage.TocInfo = tocInfo;
for (int i = 0; i < list.Count; i++)
{
// 创建目录项
var heading = new Aspose.Pdf.Heading(1)
{
TocPage = tocPage,
DestinationPage = document.Pages[bookmarkPageIndices[i] + 1],
Top = document.Pages[bookmarkPageIndices[i]].Rect.Height + 20
};
var segment = new TextSegment
{
Text = Path.GetFileNameWithoutExtension(list[i]),
TextState = { Font = FontRepository.FindFont(“SimSun”), FontSize = 14 }
};
segment.TextState.Font.IsEmbedded = true; heading.Segments.Add(segment);
tocPage.Paragraphs.Add(heading);
}
document.Save(@“C:\Users\wgewf_zomh3mr\Desktop\324\112.pdf”);
CHINET中国细菌耐药监测网技术方案(2022年更新版)2022-1-18.pdf (581.3 KB)

试剂领用流程.pdf (34.4 KB)

@wgewfndx

附件是我们使用最新版本的 API 在我们的环境中生成的输出。您能否确保 SimSun 字体可用并在您的环境中正确安装,并且您使用的是最新版本的 API?
output.pdf (766.1 KB)

您合并的文件,我使用Foxit阅读器和极光阅读器打开,书签都不完整且缺项。目录是OK的,跟在我的环境下测试是一样的。

@wgewfndx

您能分享一下缺少书签的屏幕截图吗?

aspose书签异常.png (141.2 KB)

图片箭头所示是缺少了一个书签,同时中文字体也是异常的。

@wgewfndx

看起来很奇怪。在我们的环境中使用您的代码片段时,我们无法生成书签。您是否使用相同的代码片段和 24.12 版本的 API?您是否与我们分享了完整的代码示例来重现该问题?

我的环境中使用的是我上面提供的代码,在目录这块可以正常。但是在书签会出现问题(我偿试了使用英文字符的文件名时,书签和目录均正常)。另外,我使用24.11和24.12均是这个问题,我使用该代码片段偿试使用21.7去跑,在书签这部分是正常的但目录的中文字体有问题,部分中文字体有乱码。

@wgewfndx

好吧。请您分享24.12版本在您的环境中生成的输出PDF文件。对于来回的沟通,我们深表歉意。但是,我们有必要妥善、相应地解决这个问题。

English_Merage.pdf (1.2 MB)

Chinese_Merage.pdf (1.3 MB)

真心希望尽快能得到解决,或是使用代码在您自己的开发环境中偿试看下是否有该问题复现。谢谢

@wgewfndx

我们已在内部问题跟踪系统中打开以下新票证,并将根据 Free Support Policies 中提到的条款提供修复。

问题 ID:PDFNET-58945

如果您需要优先支持,以及直接联系我们的付费支持管理团队,您可以获取 Paid Support Services