summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compare.go15
-rw-r--r--fpdf.go42
-rw-r--r--fpdf_test.go3
3 files changed, 42 insertions, 18 deletions
diff --git a/compare.go b/compare.go
index 6a79cba..3fd7eaf 100644
--- a/compare.go
+++ b/compare.go
@@ -21,15 +21,6 @@ import (
"fmt"
"io"
"io/ioutil"
- "regexp"
-)
-
-var (
- // 00000230 44 46 20 31 2e 37 29 0a 2f 43 72 65 61 74 69 6f |DF 1.7)./Creatio|
- // 00000240 6e 44 61 74 65 20 28 44 3a 32 30 31 35 31 30 30 |nDate (D:2015100|
- // 00000250 38 31 32 33 30 34 35 29 0a 3e 3e 0a 65 6e 64 6f |8123045).>>.endo|
- creationDateRe = regexp.MustCompile("/CreationDate \\(D:\\d{14}\\)")
- fixDate = []byte("/CreationDate (D:20000101000000)")
)
func writeBytes(leadStr string, startPos int, sl []byte) {
@@ -71,15 +62,11 @@ func checkBytes(pos int, sl1, sl2 []byte) (eq bool) {
}
// compareBytes compares the bytes referred to by sl1 with those referred to by
-// sl2. The comparison is done byte-for-byte with the exception of the
-// CreationDate fields which are effectively ignored. Nil is returned if the
-// buffers are equal, otherwise an error.
+// sl2. Nil is returned if the buffers are equal, otherwise an error.
func compareBytes(sl1, sl2 []byte) (err error) {
var posStart, posEnd, len1, len2, length int
var diffs bool
- sl1 = creationDateRe.ReplaceAll(sl1, fixDate)
- sl2 = creationDateRe.ReplaceAll(sl2, fixDate)
len1 = len(sl1)
len2 = len(sl2)
length = len1
diff --git a/fpdf.go b/fpdf.go
index d501574..aeb0c3e 100644
--- a/fpdf.go
+++ b/fpdf.go
@@ -42,6 +42,11 @@ import (
"time"
)
+var gl struct {
+ catalogSort bool
+ creationDate time.Time
+}
+
type fmtBuffer struct {
bytes.Buffer
}
@@ -180,6 +185,8 @@ func fpdfNew(orientationStr, unitStr, sizeStr, fontDirStr string, size SizeType)
// Set default PDF version number
f.pdfVersion = "1.3"
f.layerInit()
+ f.catalogSort = gl.catalogSort
+ f.creationDate = gl.creationDate
return
}
@@ -2987,6 +2994,13 @@ func (f *Fpdf) outf(fmtStr string, args ...interface{}) {
f.out(sprintf(fmtStr, args...))
}
+// SetDefaultCatalogSort sets the default value of the catalog sort flag that
+// will be used when initializing a new Fpdf instance. See SetCatalogSort() for
+// more details.
+func SetDefaultCatalogSort(flag bool) {
+ gl.catalogSort = flag
+}
+
// SetCatalogSort sets a flag that will be used, if true, to consistently order
// the document's internal resource catalogs. This method is typically only
// used for test purposes.
@@ -2994,10 +3008,17 @@ func (f *Fpdf) SetCatalogSort(flag bool) {
f.catalogSort = flag
}
+// SetDefaultCreationDate sets the default value of the document creation date
+// that will be used when initializing a new Fpdf instance. See
+// SetCreationDate() for more details.
+func SetDefaultCreationDate(tm time.Time) {
+ gl.creationDate = tm
+}
+
// SetCreationDate fixes the document's internal CreationDate value. By
// default, the time when the document is generated is used for this value.
// This method is typically only used for testing purposes. Specify a
-// zero-value time to revert to the default behavior
+// zero-value time to revert to the default behavior.
func (f *Fpdf) SetCreationDate(tm time.Time) {
f.creationDate = tm
}
@@ -3346,9 +3367,22 @@ func (f *Fpdf) putxobjectdict() {
func (f *Fpdf) putresourcedict() {
f.out("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]")
f.out("/Font <<")
- for _, font := range f.fonts {
- // foreach($this->fonts as $font)
- f.outf("/F%d %d 0 R", font.I, font.N)
+ {
+ var keyList []string
+ var font fontDefType
+ var key string
+ for key = range f.fonts {
+ keyList = append(keyList, key)
+ }
+ if f.catalogSort {
+ sort.Strings(keyList)
+ }
+ 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)
+ }
}
f.out(">>")
f.out("/XObject <<")
diff --git a/fpdf_test.go b/fpdf_test.go
index 39cebc0..cc0b91c 100644
--- a/fpdf_test.go
+++ b/fpdf_test.go
@@ -28,6 +28,7 @@ import (
"path/filepath"
"strconv"
"strings"
+ "time"
"github.com/jung-kurt/gofpdf"
"github.com/jung-kurt/gofpdf/internal/example"
@@ -35,6 +36,8 @@ import (
func init() {
cleanup()
+ gofpdf.SetDefaultCatalogSort(true)
+ gofpdf.SetDefaultCreationDate(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC))
}
func cleanup() {