Exemple #1
0
// Stage 4: Add Three Annotations
func stage4() {
	log.Println("stage 4")

	minimal, err := pdf.Open("h7-minimal.pdf")
	if err != nil {
		log.Fatalln(errgo.Details(err))
	}

	annotationsObj := minimal.Get(pdf.ObjectReference{ObjectNumber: 7})
	annotations := annotationsObj.(pdf.Array)

	// annotation 8 1
	ref, err := minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 8, GenerationNumber: 1},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(58),
				pdf.Integer(657),
				pdf.Integer(172),
				pdf.Integer(742),
			},
			pdf.Name("Contents"): pdf.String("New Text #1"),
			pdf.Name("Open"):     pdf.Boolean(true),
		},
	})
	if err != nil {
		log.Fatal(errgo.Details(err))
	}
	annotations = append(annotations, ref)

	// annotation 9 1
	ref, err = minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 9, GenerationNumber: 1},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(389),
				pdf.Integer(459),
				pdf.Integer(570),
				pdf.Integer(537),
			},
			pdf.Name("Contents"): pdf.String("New Text #2"),
			pdf.Name("Open"):     pdf.Boolean(false),
		},
	})
	if err != nil {
		log.Fatal(errgo.Details(err))
	}
	annotations = append(annotations, ref)

	// annotation 12 0
	ref, err = minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 12},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(44),
				pdf.Integer(253),
				pdf.Integer(473),
				pdf.Integer(337),
			},
			pdf.Name("Contents"): pdf.String("New Text #3\\203a longer text annotation which we will continue \\\nonto a second line"),
			pdf.Name("Open"):     pdf.Boolean(true),
		},
	})
	if err != nil {
		log.Fatal(errgo.Details(err))
	}
	annotations = append(annotations, ref)

	// update the annotations array
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 7},
		Object:          annotations,
	})

	err = minimal.Save()
	if err != nil {
		log.Fatalln(errgo.Details(err))
	}
}
Exemple #2
0
// Stage 1: Add Four Text Annotations
func stage1() {
	log.Println("stage 1")

	minimal, err := pdf.Open("h7-minimal.pdf")
	if err != nil {
		log.Fatalln(errgo.Details(err))
	}

	// page
	page := minimal.Get(pdf.ObjectReference{ObjectNumber: 4}).(pdf.Dictionary)
	page[pdf.Name("Annots")] = pdf.ObjectReference{ObjectNumber: 7}
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 4},
		Object:          page,
	})

	// annotation array
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 7},
		Object: pdf.Array{
			pdf.ObjectReference{ObjectNumber: 8},
			pdf.ObjectReference{ObjectNumber: 9},
			pdf.ObjectReference{ObjectNumber: 10},
			pdf.ObjectReference{ObjectNumber: 11},
		},
	})

	// annotation
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 8},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(44),
				pdf.Integer(616),
				pdf.Integer(162),
				pdf.Integer(735),
			},
			pdf.Name("Contents"): pdf.String("Text #1"),
			pdf.Name("Open"):     pdf.Boolean(true),
		},
	})

	// annotation
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 9},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(224),
				pdf.Integer(668),
				pdf.Integer(457),
				pdf.Integer(735),
			},
			pdf.Name("Contents"): pdf.String("Text #2"),
			pdf.Name("Open"):     pdf.Boolean(false),
		},
	})

	// annotation
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 10},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(239),
				pdf.Integer(393),
				pdf.Integer(328),
				pdf.Integer(622),
			},
			pdf.Name("Contents"): pdf.String("Text #3"),
			pdf.Name("Open"):     pdf.Boolean(true),
		},
	})

	// annotation
	minimal.Add(pdf.IndirectObject{
		ObjectReference: pdf.ObjectReference{ObjectNumber: 11},
		Object: pdf.Dictionary{
			pdf.Name("Type"):    pdf.Name("Annot"),
			pdf.Name("Subtype"): pdf.Name("Text"),
			pdf.Name("Rect"): pdf.Array{
				pdf.Integer(34),
				pdf.Integer(398),
				pdf.Integer(225),
				pdf.Integer(575),
			},
			pdf.Name("Contents"): pdf.String("Text #4"),
			pdf.Name("Open"):     pdf.Boolean(false),
		},
	})

	err = minimal.Save()
	if err != nil {
		log.Fatalln(errgo.Details(err))
	}
}