diff options
Diffstat (limited to 'vendor/github.com/jung-kurt/gofpdf/contrib/ghostscript')
| -rw-r--r-- | vendor/github.com/jung-kurt/gofpdf/contrib/ghostscript/ghostscript.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/vendor/github.com/jung-kurt/gofpdf/contrib/ghostscript/ghostscript.go b/vendor/github.com/jung-kurt/gofpdf/contrib/ghostscript/ghostscript.go new file mode 100644 index 0000000..3196c34 --- /dev/null +++ b/vendor/github.com/jung-kurt/gofpdf/contrib/ghostscript/ghostscript.go @@ -0,0 +1,68 @@ +package main + +// This command demonstrates the use of ghotscript to reduce the size +// of generated PDFs. This is based on a comment made by farkerhaiku: +// https://github.com/jung-kurt/gofpdf/issues/57#issuecomment-185843315 + +import ( + "fmt" + "os" + "os/exec" + + "github.com/jung-kurt/gofpdf" +) + +func report(fileStr string, err error) { + if err == nil { + var info os.FileInfo + info, err = os.Stat(fileStr) + if err == nil { + fmt.Printf("%s: OK, size %d\n", fileStr, info.Size()) + } else { + fmt.Printf("%s: bad stat\n", fileStr) + } + } else { + fmt.Printf("%s: %s\n", fileStr, err) + } +} + +func newPdf() (pdf *gofpdf.Fpdf) { + pdf = gofpdf.New("P", "mm", "A4", "../../font") + pdf.SetCompression(false) + pdf.AddFont("Calligrapher", "", "calligra.json") + pdf.AddPage() + pdf.SetFont("Calligrapher", "", 35) + pdf.Cell(0, 10, "Enjoy new fonts with FPDF!") + return +} + +func full(name string) { + report(name, newPdf().OutputFileAndClose(name)) +} + +func min(name string) { + cmd := exec.Command("gs", "-sDEVICE=pdfwrite", + "-dCompatibilityLevel=1.4", + "-dPDFSETTINGS=/screen", "-dNOPAUSE", "-dQUIET", + "-dBATCH", "-sOutputFile="+name, "-") + inPipe, err := cmd.StdinPipe() + if err == nil { + errChan := make(chan error, 1) + go func() { + errChan <- cmd.Start() + }() + err = newPdf().Output(inPipe) + if err == nil { + report(name, <-errChan) + } else { + report(name, err) + } + } else { + report(name, err) + } +} + +func main() { + full("full.pdf") + min("min.pdf") +} |
