...

Source file src/gonum.org/v1/plot/vg/vgpdf/vgpdf_example_test.go

Documentation: gonum.org/v1/plot/vg/vgpdf

     1  // Copyright ©2018 The Gonum Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package vgpdf_test
     6  
     7  import (
     8  	"fmt"
     9  	"image/color"
    10  	"log"
    11  	"os"
    12  
    13  	"gonum.org/v1/plot"
    14  	"gonum.org/v1/plot/plotter"
    15  	"gonum.org/v1/plot/vg"
    16  	"gonum.org/v1/plot/vg/draw"
    17  	"gonum.org/v1/plot/vg/vgpdf"
    18  )
    19  
    20  // Example_embedFonts shows how one can embed (or not) fonts inside
    21  // a PDF plot.
    22  func Example_embedFonts() {
    23  	p := plot.New()
    24  
    25  	pts := plotter.XYs{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 0}, {X: 1, Y: 1}}
    26  	line, err := plotter.NewLine(pts)
    27  	if err != nil {
    28  		log.Fatalf("could not create line: %v", err)
    29  	}
    30  	p.Add(line)
    31  	p.X.Label.Text = "X axis"
    32  	p.Y.Label.Text = "Y axis"
    33  
    34  	c := vgpdf.New(100, 100)
    35  
    36  	// enable/disable embedding fonts
    37  	c.EmbedFonts(true)
    38  	p.Draw(draw.New(c))
    39  
    40  	f, err := os.Create("testdata/enable-embedded-fonts.pdf")
    41  	if err != nil {
    42  		log.Fatal(err)
    43  	}
    44  	defer f.Close()
    45  
    46  	_, err = c.WriteTo(f)
    47  	if err != nil {
    48  		log.Fatalf("could not write canvas: %v", err)
    49  	}
    50  
    51  	err = f.Close()
    52  	if err != nil {
    53  		log.Fatalf("could not save canvas: %v", err)
    54  	}
    55  }
    56  
    57  // Example_multipage shows how one can create a PDF with multiple pages.
    58  func Example_multipage() {
    59  	c := vgpdf.New(5*vg.Centimeter, 5*vg.Centimeter)
    60  
    61  	for i, col := range []color.RGBA{{B: 255, A: 255}, {R: 255, A: 255}} {
    62  		if i > 0 {
    63  			// Add a new page.
    64  			c.NextPage()
    65  		}
    66  
    67  		p := plot.New()
    68  
    69  		pts := plotter.XYs{{X: 0, Y: 0}, {X: 0, Y: 1}, {X: 1, Y: 0}, {X: 1, Y: 1}}
    70  		line, err := plotter.NewLine(pts)
    71  		if err != nil {
    72  			log.Fatalf("could not create line: %v", err)
    73  		}
    74  		line.Color = col
    75  		p.Add(line)
    76  		p.Title.Text = fmt.Sprintf("Plot %d", i+1)
    77  		p.X.Label.Text = "X axis"
    78  		p.Y.Label.Text = "Y axis"
    79  
    80  		// Write plot to page.
    81  		p.Draw(draw.New(c))
    82  	}
    83  
    84  	f, err := os.Create("testdata/multipage.pdf")
    85  	if err != nil {
    86  		log.Fatal(err)
    87  	}
    88  	defer f.Close()
    89  
    90  	_, err = c.WriteTo(f)
    91  	if err != nil {
    92  		log.Fatalf("could not write canvas: %v", err)
    93  	}
    94  
    95  	err = f.Close()
    96  	if err != nil {
    97  		log.Fatalf("could not save canvas: %v", err)
    98  	}
    99  }
   100  

View as plain text