Ejemplo n.º 1
0
// transforms the page tree from the file into an array of pages
func getPages(file *pdf.File, ref pdf.ObjectReference) []pdf.Dictionary {
	pages := []pdf.Dictionary{}
	pageNode := file.Get(ref).(pdf.Dictionary)

	switch pageNode["Type"] {
	case pdf.Name("Pages"):
		for _, kidRef := range pageNode["Kids"].(pdf.Array) {
			kidPages := getPages(file, kidRef.(pdf.ObjectReference))
			pages = append(pages, kidPages...)
			file.Free(kidRef.(pdf.ObjectReference).ObjectNumber)
		}
	case pdf.Name("Page"):
		pages = append(pages, pageNode)
		file.Free(ref.ObjectNumber)
	default:
		panic(string(pageNode["Type"].(pdf.Name)))
	}

	return pages
}