-
Notifications
You must be signed in to change notification settings - Fork 15
/
main.go
121 lines (99 loc) · 3.34 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package main
import (
"time"
pdfjet "github.com/edragoev1/pdfjet/src"
"github.com/edragoev1/pdfjet/src/color"
"github.com/edragoev1/pdfjet/src/compliance"
"github.com/edragoev1/pdfjet/src/corefont"
"github.com/edragoev1/pdfjet/src/letter"
)
// Example26 draws the Canadian flag using a Path object that contains both lines
// and curve segments. Every curve segment must have exactly 2 control points.
func Example26() {
pdf := pdfjet.NewPDFFile("Example_26.pdf", compliance.PDF15)
font1 := pdfjet.NewCoreFont(pdf, corefont.Helvetica())
font2 := pdfjet.NewFontFromFile(pdf, "fonts/Droid/DroidSerif-Regular.ttf.stream")
font3 := pdfjet.NewFontFromFile(pdf, "fonts/Droid/DroidSansMono.ttf.stream")
image := pdfjet.NewImageFromFile(pdf, "images/ee-map.png")
page := pdfjet.NewPage(pdf, letter.Portrait)
flag := pdfjet.NewBoxAt(85.0, 85.0, 64.0, 32.0)
path := pdfjet.NewPath()
path.Add(pdfjet.NewPoint(13.0, 0.0))
path.Add(pdfjet.NewPoint(15.5, 4.5))
path.Add(pdfjet.NewPoint(18.0, 3.5))
path.Add(pdfjet.NewControlPoint(15.5, 13.5))
path.Add(pdfjet.NewControlPoint(15.5, 13.5))
path.Add(pdfjet.NewPoint(20.5, 7.5))
path.Add(pdfjet.NewPoint(21.0, 9.5))
path.Add(pdfjet.NewPoint(25.0, 9.0))
path.Add(pdfjet.NewPoint(24.0, 13.0))
path.Add(pdfjet.NewPoint(25.5, 14.0))
path.Add(pdfjet.NewPoint(19.0, 19.0))
path.Add(pdfjet.NewPoint(20.0, 21.5))
path.Add(pdfjet.NewPoint(13.5, 20.5))
path.Add(pdfjet.NewPoint(13.5, 27.0))
path.Add(pdfjet.NewPoint(12.5, 27.0))
path.Add(pdfjet.NewPoint(12.5, 20.5))
path.Add(pdfjet.NewPoint(6.0, 21.5))
path.Add(pdfjet.NewPoint(7.0, 19.0))
path.Add(pdfjet.NewPoint(0.5, 14.0))
path.Add(pdfjet.NewPoint(2.0, 13.0))
path.Add(pdfjet.NewPoint(1.0, 9.0))
path.Add(pdfjet.NewPoint(5.0, 9.5))
path.Add(pdfjet.NewPoint(5.5, 7.5))
path.Add(pdfjet.NewControlPoint(10.5, 13.5))
path.Add(pdfjet.NewControlPoint(10.5, 13.5))
path.Add(pdfjet.NewPoint(8.0, 3.5))
path.Add(pdfjet.NewPoint(10.5, 4.5))
path.SetClosePath(true)
path.SetColor(color.Red)
path.SetFillShape(true)
path.PlaceIn(flag, 19.0, 3.0)
path.DrawOn(page)
box := pdfjet.NewBox()
box.SetSize(16.0, 32.0)
box.SetColor(color.Red)
box.SetFillShape(true)
box.PlaceIn(flag, 0.0, 0.0)
box.DrawOn(page)
box.PlaceIn(flag, 48.0, 0.0)
box.DrawOn(page)
path.ScaleBy(15.0)
path.SetFillShape(false)
xy := path.DrawOn(page)
box = pdfjet.NewBox()
box.SetLocation(xy[0], xy[1])
box.SetSize(20.0, 20.0)
box.DrawOn(page)
font1.SetSize(24.0)
textField := pdfjet.NewTextLine(font1, "Hello, World!")
textField.SetLocation(300.0, 300.0)
textField.SetColor(color.Blanchedalmond)
textField.DrawOn(page)
font2.SetSize(24.0)
textField2 := pdfjet.NewTextLine(font2, "This is great!")
textField2.SetLocation(400.0, 400.0)
textField2.SetColor(color.Blue)
textField2.SetStrikeout(true)
textField2.SetUnderline(true)
textField2.DrawOn(page)
font2.SetSize(14.0)
textField2 = pdfjet.NewTextLine(font2, "This is great!")
textField2.SetLocation(400.0, 500.0)
textField2.SetColor(color.Blue)
textField2.DrawOn(page)
font3.SetSize(24.0)
textField2 = pdfjet.NewTextLine(font3, "This is great!")
textField2.SetLocation(400.0, 600.0)
textField2.SetColor(color.Blue)
textField2.DrawOn(page)
image.SetLocation(100.0, 500.0)
image.ScaleBy(0.5)
image.DrawOn(page)
pdf.Complete()
}
func main() {
start := time.Now()
Example26()
pdfjet.PrintDuration("Example_26", time.Since(start))
}