Improve traversal of outline item nodes in the GetOutlinesFlattened method

This commit is contained in:
Adrian-George Bostan 2020-01-14 21:39:12 +02:00
parent 4b1d8a98fd
commit ac736a2f78

View File

@ -414,13 +414,11 @@ func (r *PdfReader) GetOutlinesFlattened() ([]*PdfOutlineTreeNode, []string, err
return
}
if item, isItem := node.context.(*PdfOutlineItem); isItem {
item, isItem := node.context.(*PdfOutlineItem)
if isItem {
*outlineList = append(*outlineList, &item.PdfOutlineTreeNode)
title := strings.Repeat(" ", depth*2) + item.Title.Str()
title := strings.Repeat(" ", depth*2) + item.Title.Decoded()
*titleList = append(*titleList, title)
if item.Next != nil {
flattenFunc(item.Next, outlineList, titleList, depth)
}
}
if node.First != nil {
@ -428,6 +426,10 @@ func (r *PdfReader) GetOutlinesFlattened() ([]*PdfOutlineTreeNode, []string, err
*titleList = append(*titleList, title)
flattenFunc(node.First, outlineList, titleList, depth+1)
}
if isItem && item.Next != nil {
flattenFunc(item.Next, outlineList, titleList, depth)
}
}
flattenFunc(r.outlineTree, &outlineNodeList, &flattenedTitleList, 0)
return outlineNodeList, flattenedTitleList, nil