diff options
| author | Kurt Jung <kurt.w.jung@gmail.com> | 2015-10-10 15:24:43 -0400 | 
|---|---|---|
| committer | Kurt Jung <kurt.w.jung@gmail.com> | 2015-10-10 15:24:43 -0400 | 
| commit | 92858a8b5ff04e4196597d9d517f3b2a0d651579 (patch) | |
| tree | 4697ba0ba2019cd48d29ad462da280bd18aa6e36 | |
| parent | 5847afd8a205853a7effbf749b7a388ae325eb24 (diff) | |
Conditionally sort image catalog. Correct small typos.
| -rw-r--r-- | compare.go | 23 | ||||
| -rw-r--r-- | def.go | 4 | ||||
| -rw-r--r-- | fpdf.go | 20 | ||||
| -rw-r--r-- | fpdf_test.go | 1 | ||||
| -rw-r--r-- | template.go | 6 | 
5 files changed, 42 insertions, 12 deletions
| @@ -21,8 +21,31 @@ import (  	"fmt"  	"io"  	"io/ioutil" +	"sort"  ) +type sortType struct { +	length int +	less   func(int, int) bool +	swap   func(int, int) +} + +func (s *sortType) Len() int { +	return s.length +} + +func (s *sortType) Less(i, j int) bool { +	return s.less(i, j) +} + +func (s *sortType) Swap(i, j int) { +	s.swap(i, j) +} + +func gensort(Len int, Less func(int, int) bool, Swap func(int, int)) { +	sort.Sort(&sortType{length: Len, less: Less, swap: Swap}) +} +  func writeBytes(leadStr string, startPos int, sl []byte) {  	var pos, max int  	var b byte @@ -151,7 +151,7 @@ type InitType struct {  // from arbitrary locations (e.g. files, zip files, embedded font resources).  //  // Open provides an io.Reader for the specified font file (.json or .z). The file name -// does never include a path. Open returns an error if the specified file cannot be opened. +// never includes a path. Open returns an error if the specified file cannot be opened.  type FontLoader interface {  	Open(name string) (io.Reader, error)  } @@ -162,7 +162,7 @@ type Fpdf struct {  	n                int                       // current object number  	offsets          []int                     // array of object offsets  	templates        map[int64]Template        // templates used in this document -	templateObjects  map[int64]int             //template object IDs within this document +	templateObjects  map[int64]int             // template object IDs within this document  	buffer           fmtBuffer                 // buffer holding in-memory PDF  	pages            []*bytes.Buffer           // slice[page] of page content; 1-based  	state            int                       // current document state @@ -3140,7 +3140,6 @@ func (f *Fpdf) putfonts() {  			sort.Strings(fileList)  		}  		for _, file = range fileList { -			// for file, info := range f.fontFiles {  			info = f.fontFiles[file]  			// Font file embedding  			f.newobj() @@ -3352,9 +3351,20 @@ func (f *Fpdf) putimage(info *ImageInfoType) {  }  func (f *Fpdf) putxobjectdict() { -	for _, image := range f.images { -		// 	foreach($this->images as $image) -		f.outf("/I%d %d 0 R", image.i, image.n) +	{ +		var image *ImageInfoType +		var key string +		var keyList []string +		for key = range f.images { +			keyList = append(keyList, key) +		} +		if f.catalogSort { +			sort.Strings(keyList) +		} +		for _, key = range keyList { +			image = f.images[key] +			f.outf("/I%d %d 0 R", image.i, image.n) +		}  	}  	for _, tpl := range f.templates {  		id := tpl.ID() @@ -3379,8 +3389,6 @@ func (f *Fpdf) putresourcedict() {  		}  		for _, key = range keyList {  			font = f.fonts[key] -			// for _, font := range f.fonts { -			// 	foreach($this->fonts as $font)  			f.outf("/F%d %d 0 R", font.I, font.N)  		}  	} diff --git a/fpdf_test.go b/fpdf_test.go index cc0b91c..2238ccd 100644 --- a/fpdf_test.go +++ b/fpdf_test.go @@ -113,7 +113,6 @@ func Example() {  // This example demonsrates the generation of headers, footers and page breaks.  func ExampleFpdf_AddPage() {  	pdf := gofpdf.New("P", "mm", "A4", "") -	pdf.SetCatalogSort(true)  	pdf.SetHeaderFunc(func() {  		pdf.Image(example.ImageFile("logo.png"), 10, 6, 30, 0, false, "", 0, "")  		pdf.SetY(5) diff --git a/template.go b/template.go index 7561ae1..342032e 100644 --- a/template.go +++ b/template.go @@ -36,7 +36,7 @@ func CreateTemplate(corner PointType, size SizeType, unitStr, fontDirStr string,  // using the size and position at which it was originally written.  func (f *Fpdf) UseTemplate(t Template) {  	if t == nil { -		f.SetErrorf("Template is nil") +		f.SetErrorf("template is nil")  		return  	}  	corner, size := t.Size() @@ -47,13 +47,13 @@ func (f *Fpdf) UseTemplate(t Template) {  // using the given page coordinates.  func (f *Fpdf) UseTemplateScaled(t Template, corner PointType, size SizeType) {  	if t == nil { -		f.SetErrorf("Template is nil") +		f.SetErrorf("template is nil")  		return  	}  	// You have to add at least a page first  	if f.page <= 0 { -		f.SetErrorf("Cannot use a template without first adding a page") +		f.SetErrorf("cannot use a template without first adding a page")  		return  	} | 
