作成日: 2025/12/01 最終更新日: 2026/03/27
文書種別
不具合
状況
修正済み
詳細
PDFを保存するとき、アウトライン(しおり)の階層が深いほど、処理時間が増大します。
階層が70以上ある場合、現実的な時間では処理が完了しません。
回避方法
V9J (9.0.3) で修正済み
※以前の回避方法
直接的な回避方法はありません。
次善の対策としては、アウトラインを削除してからPDFを保存する方法が有効です。
階層の深さをカウントし、一定数を超えるときは削除する方法などをご検討ください。
◆サンプルコード (C#)
// アウトライン階層が20を超過するときは削除
int nest_max = CountOutlinesNest(doc.Outlines);
if (nest_max > 20) doc.Outlines.Clear();
// アウトライン階層の深さをカウントする関数
private int CountOutlinesNest(OutlineNodeCollection outlines)
{
int nest, nest_max = 0;
foreach (var outline in outlines)
{
if (outline.HasChildren)
{
nest = 1 + CountOutlinesNest(outline.Children);
}
else
{
nest = 1;
}
nest_max = Math.Max(nest, nest_max);
}
return nest_max;
}◆サンプルコード (VB.NET)
'アウトライン階層が20を超過するときは削除
Dim nest_max As Integer = CountOutlinesNest(doc.Outlines)
If nest_max > 20 Then doc.Outlines.Clear()
'アウトライン階層の深さをカウントする関数
Private Function CountOutlinesNest(ByVal outlines As OutlineNodeCollection) As Integer
Dim nest, nest_max As Integer
For Each outline As OutlineNode In outlines
If outline.HasChildren Then
nest = 1 + CountOutlinesNest(outline.Children)
Else
nest = 1
End If
nest_max = Math.Max(nest, nest_max)
Next
Return nest_max
End Function