go-wkhtmltopdf
go-wkhtmltopdf copied to clipboard
Go bindings for wkhtmltopdf and high-level HTML to PDF conversion interface
Go bindings and high-level HTML to PDF conversion interface.
Implements wkhtmltopdf Go bindings. It can be used to convert HTML documents to PDF files.
The package does not use the wkhtmltopdf
binary. Instead, it uses the wkhtmltox
library directly.
Full documentation can be found at https://pkg.go.dev/github.com/adrg/go-wkhtmltopdf.
Examples
- Basic usage
- Converter callbacks
- Convert HTML document based on JSON input
- Basic web page to PDF conversion server
- Configurable web page to PDF conversion server
Prerequisites
In order to use the package, wkhtmltox
must be installed. Installation packages
for multiple operating systems can be found at https://builds.wkhtmltopdf.org.
Please see the wiki pages of this project for detailed installation instructions.
Installation
go get github.com/adrg/go-wkhtmltopdf
Usage
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 object from file.
object, err := pdf.NewObject("sample1.html")
if err != nil {
log.Fatal(err)
}
object.Header.ContentCenter = "[title]"
object.Header.DisplaySeparator = true
// Create object from URL.
object2, err := pdf.NewObject("https://google.com")
if err != nil {
log.Fatal(err)
}
object.Footer.ContentLeft = "[date]"
object.Footer.ContentCenter = "Sample footer information"
object.Footer.ContentRight = "[page]"
object.Footer.DisplaySeparator = true
// Create object from reader.
inFile, err := os.Open("sample2.html")
if err != nil {
log.Fatal(err)
}
defer inFile.Close()
object3, err := pdf.NewObjectFromReader(inFile)
if err != nil {
log.Fatal(err)
}
object3.Zoom = 1.5
object3.TOC.Title = "Table of Contents"
// Create converter.
converter, err := pdf.NewConverter()
if err != nil {
log.Fatal(err)
}
defer converter.Destroy()
// Add created objects to the converter.
converter.Add(object)
converter.Add(object2)
converter.Add(object3)
// Set converter options.
converter.Title = "Sample document"
converter.PaperSize = pdf.A4
converter.Orientation = pdf.Landscape
converter.MarginTop = "1cm"
converter.MarginBottom = "1cm"
converter.MarginLeft = "10mm"
converter.MarginRight = "10mm"
// Convert objects and save the output PDF document.
outFile, err := os.Create("out.pdf")
if err != nil {
log.Fatal(err)
}
defer outFile.Close()
if err := converter.Run(outFile); err != nil {
log.Fatal(err)
}
}
Stargazers over time
Contributing
Contributions in the form of pull requests, issues or just general feedback,
are always welcome.
See CONTRIBUTING.MD.
Contributors: adrg, leandrosilva.
References
For more information see the wkhtmltopdf documentation and the wkhtmltox documentation.
License
Copyright (c) 2016 Adrian-George Bostan.
This project is licensed under the MIT license. See LICENSE for more details.