-
-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathmain.go
67 lines (58 loc) · 1.48 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
package main
import (
"log"
"os"
pdf "github.com/adrg/go-wkhtmltopdf"
)
func main() {
// Initialize library.
if err := pdf.Init(); err != nil {
log.Fatal(err)
}
defer pdf.Destroy()
// Create converter.
converter, err := pdf.NewConverter()
if err != nil {
log.Fatal(err)
}
defer converter.Destroy()
// Set up converter callbacks.
converter.Warning = func(msg string) {
log.Printf("warning: %s\n", msg)
}
converter.Error = func(msg string) {
log.Printf("error: %s\n", msg)
}
converter.PhaseChanged = func(phase int) {
log.Printf("phase #%d: %s\n", phase, converter.PhaseDescription(phase))
}
converter.ProgressChanged = func(percent int) {
log.Printf("progress: %d%%\n", percent)
}
converter.Finished = func(success bool) {
log.Printf("finished: %t\n", success)
}
// Create objects.
object, err := pdf.NewObject("https://www.google.com")
if err != nil {
log.Fatal(err)
}
object.Header.ContentCenter = "[title]"
object.Header.DisplaySeparator = true
object.Footer.ContentLeft = "[date]"
object.Footer.ContentCenter = "Sample footer information"
object.Footer.ContentRight = "[page]"
object.Footer.DisplaySeparator = true
converter.Add(object)
// Create output file.
outFile, err := os.Create("out.pdf")
if err != nil {
log.Fatal(err)
}
defer outFile.Close()
// Run converter. Due to a limitation of the `wkhtmltox` library, the
// conversion must be performed on the main thread.
if err := converter.Run(outFile); err != nil {
log.Fatal(err)
}
}