123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- // Copyright (c) 2015 Kurt Jung (Gmail: kurt.w.jung)
- //
- // Permission to use, copy, modify, and distribute this software for any purpose
- // with or without fee is hereby granted, provided that the above copyright notice
- // and this permission notice appear in all copies.
- //
- // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- // FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- // OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- // PERFORMANCE OF THIS SOFTWARE.
- // Package example provides some helper routines for the test packages of
- // gofpdf and its various contributed packages located beneath the contrib
- // directory.
- package example
- import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
- "time"
- "github.com/jung-kurt/gofpdf"
- )
- var gofpdfDir string
- func init() {
- setRoot()
- gofpdf.SetDefaultCompression(false)
- gofpdf.SetDefaultCatalogSort(true)
- gofpdf.SetDefaultCreationDate(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC))
- gofpdf.SetDefaultModificationDate(time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC))
- }
- // setRoot assigns the relative path to the gofpdfDir directory based on current working
- // directory
- func setRoot() {
- wdStr, err := os.Getwd()
- if err == nil {
- gofpdfDir = ""
- list := strings.Split(filepath.ToSlash(wdStr), "/")
- for j := len(list) - 1; j >= 0 && list[j] != "gofpdf"; j-- {
- gofpdfDir = filepath.Join(gofpdfDir, "..")
- }
- } else {
- panic(err)
- }
- }
- // ImageFile returns a qualified filename in which the path to the image
- // directory is prepended to the specified filename.
- func ImageFile(fileStr string) string {
- return filepath.Join(gofpdfDir, "image", fileStr)
- }
- // FontDir returns the path to the font directory.
- func FontDir() string {
- return filepath.Join(gofpdfDir, "font")
- }
- // FontFile returns a qualified filename in which the path to the font
- // directory is prepended to the specified filename.
- func FontFile(fileStr string) string {
- return filepath.Join(FontDir(), fileStr)
- }
- // TextFile returns a qualified filename in which the path to the text
- // directory is prepended to the specified filename.
- func TextFile(fileStr string) string {
- return filepath.Join(gofpdfDir, "text", fileStr)
- }
- // PdfDir returns the path to the PDF output directory.
- func PdfDir() string {
- return filepath.Join(gofpdfDir, "pdf")
- }
- // PdfFile returns a qualified filename in which the path to the PDF output
- // directory is prepended to the specified filename.
- func PdfFile(fileStr string) string {
- return filepath.Join(PdfDir(), fileStr)
- }
- // Filename returns a qualified filename in which the example PDF directory
- // path is prepended and the suffix ".pdf" is appended to the specified
- // filename.
- func Filename(baseStr string) string {
- return PdfFile(baseStr + ".pdf")
- }
- // referenceCompare compares the specified file with the file's reference copy
- // located in the 'reference' subdirectory. All bytes of the two files are
- // compared except for the value of the /CreationDate field in the PDF. This
- // function succeeds if both files are equivalent except for their
- // /CreationDate values or if the reference file does not exist.
- func referenceCompare(fileStr string) (err error) {
- var refFileStr, refDirStr, dirStr, baseFileStr string
- dirStr, baseFileStr = filepath.Split(fileStr)
- refDirStr = filepath.Join(dirStr, "reference")
- err = os.MkdirAll(refDirStr, 0755)
- if err == nil {
- refFileStr = filepath.Join(refDirStr, baseFileStr)
- err = gofpdf.ComparePDFFiles(fileStr, refFileStr, false)
- }
- return
- }
- // Summary generates a predictable report for use by test examples. If the
- // specified error is nil, the filename delimiters are normalized and the
- // filename printed to standard output with a success message. If the specified
- // error is not nil, its String() value is printed to standard output.
- func Summary(err error, fileStr string) {
- if err == nil {
- fileStr = filepath.ToSlash(fileStr)
- fmt.Printf("Successfully generated %s\n", fileStr)
- } else {
- fmt.Println(err)
- }
- }
- // SummaryCompare generates a predictable report for use by test examples. If
- // the specified error is nil, the generated file is compared with a reference
- // copy for byte-for-byte equality. If the files match, then the filename
- // delimiters are normalized and the filename printed to standard output with a
- // success message. If the files do not match, this condition is reported on
- // standard output. If the specified error is not nil, its String() value is
- // printed to standard output.
- func SummaryCompare(err error, fileStr string) {
- if err == nil {
- err = referenceCompare(fileStr)
- }
- if err == nil {
- fileStr = filepath.ToSlash(fileStr)
- fmt.Printf("Successfully generated %s\n", fileStr)
- } else {
- fmt.Println(err)
- }
- }
|