plot: gonum.org/v1/plot/vg/vgpdf Index | Examples | Files

package vgpdf

import "gonum.org/v1/plot/vg/vgpdf"

Package vgpdf implements the vg.Canvas interface using gofpdf (github.com/jung-kurt/gofpdf).

Example_embedFonts shows how one can embed (or not) fonts inside a PDF plot.

Code:

p, err := plot.New()
if err != nil {
    log.Fatalf("could not create plot: %v", err)
}

pts := plotter.XYs{{0, 0}, {0, 1}, {1, 0}, {1, 1}}
line, err := plotter.NewLine(pts)
if err != nil {
    log.Fatalf("could not create line: %v", err)
}
p.Add(line)
p.X.Label.Text = "X axis"
p.Y.Label.Text = "Y axis"

c := vgpdf.New(100, 100)

// enable/disable embedding fonts
c.EmbedFonts(true)
p.Draw(draw.New(c))

f, err := os.Create("testdata/enable-embedded-fonts.pdf")
if err != nil {
    log.Fatal(err)
}
defer f.Close()

_, err = c.WriteTo(f)
if err != nil {
    log.Fatalf("could not write canvas: %v", err)
}

err = f.Close()
if err != nil {
    log.Fatalf("could not save canvas: %v", err)
}

Example_multipage shows how one can create a PDF with multiple pages.

Code:

c := vgpdf.New(5*vg.Centimeter, 5*vg.Centimeter)

for i, col := range []color.RGBA{{B: 255, A: 255}, {R: 255, A: 255}} {
    if i > 0 {
        // Add a new page.
        c.NextPage()
    }

    p, err := plot.New()
    if err != nil {
        log.Fatalf("could not create plot: %v", err)
    }

    pts := plotter.XYs{{0, 0}, {0, 1}, {1, 0}, {1, 1}}
    line, err := plotter.NewLine(pts)
    if err != nil {
        log.Fatalf("could not create line: %v", err)
    }
    line.Color = col
    p.Add(line)
    p.Title.Text = fmt.Sprintf("Plot %d", i+1)
    p.X.Label.Text = "X axis"
    p.Y.Label.Text = "Y axis"

    // Write plot to page.
    p.Draw(draw.New(c))
}

f, err := os.Create("testdata/multipage.pdf")
if err != nil {
    log.Fatal(err)
}
defer f.Close()

_, err = c.WriteTo(f)
if err != nil {
    log.Fatalf("could not write canvas: %v", err)
}

err = f.Close()
if err != nil {
    log.Fatalf("could not save canvas: %v", err)
}

Index

Examples

Package Files

vgpdf.go

Constants

const DPI = 72

DPI is the nominal resolution of drawing in PDF.

type Canvas Uses

type Canvas struct {
    // contains filtered or unexported fields
}

Canvas implements the vg.Canvas interface, drawing to a PDF.

func New Uses

func New(w, h vg.Length) *Canvas

New creates a new PDF Canvas.

func (*Canvas) DPI Uses

func (c *Canvas) DPI() float64

func (*Canvas) DrawImage Uses

func (c *Canvas) DrawImage(rect vg.Rectangle, img image.Image)

DrawImage implements the vg.Canvas.DrawImage method.

func (*Canvas) EmbedFonts Uses

func (c *Canvas) EmbedFonts(v bool) bool

EmbedFonts specifies whether the resulting PDF canvas should embed the fonts or not. EmbedFonts returns the previous value before modification.

func (*Canvas) Fill Uses

func (c *Canvas) Fill(p vg.Path)

func (*Canvas) FillString Uses

func (c *Canvas) FillString(fnt vg.Font, pt vg.Point, str string)

func (*Canvas) NextPage Uses

func (c *Canvas) NextPage()

NextPage creates a new page in the final PDF document. The new page is the new current page. Modifications applied to the canvas will only be applied to that new page.

func (*Canvas) Pop Uses

func (c *Canvas) Pop()

func (*Canvas) Push Uses

func (c *Canvas) Push()

func (*Canvas) Rotate Uses

func (c *Canvas) Rotate(r float64)

func (*Canvas) Scale Uses

func (c *Canvas) Scale(x float64, y float64)

func (*Canvas) SetColor Uses

func (c *Canvas) SetColor(clr color.Color)

func (*Canvas) SetLineDash Uses

func (c *Canvas) SetLineDash(dashes []vg.Length, offs vg.Length)

func (*Canvas) SetLineWidth Uses

func (c *Canvas) SetLineWidth(w vg.Length)

func (*Canvas) Size Uses

func (c *Canvas) Size() (w, h vg.Length)

func (*Canvas) Stroke Uses

func (c *Canvas) Stroke(p vg.Path)

func (*Canvas) Translate Uses

func (c *Canvas) Translate(pt vg.Point)

func (*Canvas) WriteTo Uses

func (c *Canvas) WriteTo(w io.Writer) (int64, error)

WriteTo writes the Canvas to an io.Writer. After calling Write, the canvas is closed and may no longer be used for drawing.

Package vgpdf imports 15 packages (graph) and is imported by 3 packages. Updated 2019-03-15. Refresh now. Tools for package owners.