Created
December 23, 2019 19:37
-
-
Save nmorenor/78f0cf3f92e4e22a61ae147deb1357eb to your computer and use it in GitHub Desktop.
Maroto layout problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"os" | |
"encoding/base64" | |
"io/ioutil" | |
"time" | |
"github.com/johnfercher/maroto/pkg/consts" | |
"github.com/johnfercher/maroto/pkg/pdf" | |
"github.com/johnfercher/maroto/pkg/props" | |
) | |
func main() { | |
begin := time.Now() | |
m := pdf.NewMaroto(consts.Portrait, consts.Letter) | |
//m.SetBorder(true) | |
byteSlices, err := ioutil.ReadFile("internal/biplane.jpg") | |
if err != nil { | |
fmt.Println("Got error while opening file:", err) | |
os.Exit(1) | |
} | |
base64 := base64.StdEncoding.EncodeToString(byteSlices) | |
headerSmall, smallContent := getSmallContent() | |
m.RegisterHeader(func() { | |
m.Row(30, func() { | |
m.Col(func() { | |
m.Base64Image(base64, consts.Jpg, props.Rect{ | |
Center: true, | |
Percent: 70, | |
}) | |
}) | |
}) | |
m.Line(1.0) | |
}) | |
m.RegisterFooter(func() { | |
m.Line(1.0) | |
m.Row(16, func() { | |
m.Col(func() { | |
m.Text("Some Address,", props.Text{ | |
Top: 4, | |
Size: 10, | |
Style: consts.Normal, | |
Align: consts.Left, | |
Family: consts.Arial, | |
}) | |
m.Text("Something,", props.Text{ | |
Top: 8, | |
Size: 10, | |
Style: consts.Normal, | |
Align: consts.Left, | |
Family: consts.Arial, | |
}) | |
m.Text("Some City,", props.Text{ | |
Top: 12, | |
Size: 10, | |
Style: consts.Normal, | |
Align: consts.Left, | |
Family: consts.Arial, | |
}) | |
m.Text("125485", props.Text{ | |
Top: 16, | |
Size: 10, | |
Style: consts.Normal, | |
Align: consts.Left, | |
Family: consts.Arial, | |
}) | |
}) | |
m.Col(func() { | |
m.Text("www.somesite.com", props.Text{ | |
Top: 4, | |
Size: 10, | |
Style: consts.Normal, | |
Align: consts.Right, | |
Family: consts.Arial, | |
}) | |
}) | |
}) | |
}) | |
m.Row(4, func() { | |
m.Col(func() { | |
m.Text("Plan", props.Text{ | |
Top: 10, | |
Size: 16, | |
Style: consts.Bold, | |
Align: consts.Left, | |
Family: consts.Arial, | |
}) | |
}) | |
}) | |
m.Row(12, func() { | |
m.Col(func() { | |
m.Text("Fecha: 20 - 12 - 2019", props.Text{ | |
Top: 6, | |
Style: consts.Bold, | |
}) | |
}) | |
}) | |
m.Row(10, func() { | |
m.Col(func() { | |
m.Text("Nombre: Some Name", props.Text{ | |
Top: 0, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("Edad: Some years", props.Text{ | |
Top: 4, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("Talla: Some Heigh", props.Text{ | |
Top: 8, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
}) | |
}) | |
m.Line(1.0) | |
m.Row(12, func() { | |
m.Col(func() { | |
m.Text("Resultados composición corporal", props.Text{ | |
Top: 4, | |
Style: consts.Bold, | |
}) | |
}) | |
}) | |
m.Row(15, func() { | |
m.Col(func() { | |
m.Text("Peso:", props.Text{ | |
Top: 0, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("IMC:", props.Text{ | |
Top: 4, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("Cintura:", props.Text{ | |
Top: 8, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("Cadera:", props.Text{ | |
Top: 12, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
}) | |
m.Col(func() { | |
m.Text("67 kg", props.Text{ | |
Top: 0, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("21", props.Text{ | |
Top: 4, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("75", props.Text{ | |
Top: 8, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("90.5 cm", props.Text{ | |
Top: 12, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
}) | |
m.Col(func() { | |
m.Text("%Agua:", props.Text{ | |
Top: 0, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("%Grasa:", props.Text{ | |
Top: 4, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("M. Grasa:", props.Text{ | |
Top: 8, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("M. Muscular:", props.Text{ | |
Top: 12, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
}) | |
m.Col(func() { | |
m.Text("65.1", props.Text{ | |
Top: 0, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("16.1", props.Text{ | |
Top: 4, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("10.91 kg", props.Text{ | |
Top: 8, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
m.Text("30.3 kg", props.Text{ | |
Top: 12, | |
Align: consts.Left, | |
Style: consts.Normal, | |
}) | |
}) | |
}) | |
m.Line(1.0) | |
m.TableList(headerSmall, smallContent) | |
err = m.OutputFileAndClose("internal/sample1.pdf") | |
if err != nil { | |
fmt.Println("Could not save PDF:", err) | |
os.Exit(1) | |
} | |
end := time.Now() | |
fmt.Println(end.Sub(begin)) | |
} | |
func getSmallContent() ([]string, [][]string) { | |
header := []string{"Hour", "Description"} | |
contents := [][]string{} | |
contents = append(contents, []string{"Desayuno: 8:00", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ac orci phasellus egestas tellus rutrum tellus pellentesque. Nibh mauris cursus mattis molestie. Proin libero nunc consequat interdum varius sit amet mattis. A pellentesque sit amet porttitor. Et molestie ac feugiat sed. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque. Nascetur ridiculus mus mauris vitae ultricies leo. Sem viverra aliquet eget sit amet tellus cras. Leo a diam sollicitudin tempor id eu nisl nunc. Amet porttitor eget dolor morbi non arcu risus quis. Donec ac odio tempor orci dapibus ultrices in iaculis. Arcu vitae elementum curabitur vitae nunc sed. Nibh tellus molestie nunc non blandit massa enim nec. Arcu risus quis varius quam quisque id diam vel quam. Potenti nullam ac tortor vitae. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Et tortor at risus viverra adipiscing at. Amet nulla facilisi morbi tempus iaculis urna id. Ut enim blandit volutpat maecenas volutpat blandit aliquam. Elit at imperdiet dui accumsan sit amet nulla facilisi morbi. Lectus urna duis convallis convallis tellus id interdum. Mollis aliquam ut porttitor leo a diam. Quisque non tellus orci ac auctor augue mauris augue neque. Quis ipsum suspendisse ultrices gravida dictum fusce ut. Dui accumsan sit amet nulla facilisi morbi tempus iaculis urna. Dis parturient montes nascetur ridiculus mus. In massa tempor nec feugiat nisl. Commodo elit at imperdiet dui accumsan sit. Consectetur adipiscing elit ut aliquam purus sit. Tellus in metus vulputate eu scelerisque. Gravida neque convallis a cras semper. Eu augue ut lectus arcu bibendum at. Mauris pharetra et ultrices neque ornare aenean euismod. Commodo odio aenean sed adipiscing diam donec adipiscing. Ornare aenean euismod elementum nisi quis eleifend quam adipiscing vitae. Tincidunt augue interdum velit euismod in pellentesque massa. Nibh mauris cursus mattis molestie a iaculis at. Amet nisl purus in mollis nunc sed id semper risus. Pretium lectus quam id leo in vitae turpis massa sed."}) | |
contents = append(contents, []string{"Comida: 14:00", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ac orci phasellus egestas tellus rutrum tellus pellentesque. Nibh mauris cursus mattis molestie. Proin libero nunc consequat interdum varius sit amet mattis. A pellentesque sit amet porttitor. Et molestie ac feugiat sed. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque. Nascetur ridiculus mus mauris vitae ultricies leo. Sem viverra aliquet eget sit amet tellus cras. Leo a diam sollicitudin tempor id eu nisl nunc. Amet porttitor eget dolor morbi non arcu risus quis. Donec ac odio tempor orci dapibus ultrices in iaculis. Arcu vitae elementum curabitur vitae nunc sed. Nibh tellus molestie nunc non blandit massa enim nec. Arcu risus quis varius quam quisque id diam vel quam. Potenti nullam ac tortor vitae. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Et tortor at risus viverra adipiscing at. Amet nulla facilisi morbi tempus iaculis urna id. Ut enim blandit volutpat maecenas volutpat blandit aliquam. Elit at imperdiet dui accumsan sit amet nulla facilisi morbi. Lectus urna duis convallis convallis tellus id interdum. Mollis aliquam ut porttitor leo a diam. Quisque non tellus orci ac auctor augue mauris augue neque. Quis ipsum suspendisse ultrices gravida dictum fusce ut. Dui accumsan sit amet nulla facilisi morbi tempus iaculis urna. Dis parturient montes nascetur ridiculus mus. In massa tempor nec feugiat nisl. Commodo elit at imperdiet dui accumsan sit. Consectetur adipiscing elit ut aliquam purus sit. Tellus in metus vulputate eu scelerisque. Gravida neque convallis a cras semper. Eu augue ut lectus arcu bibendum at. Mauris pharetra et ultrices neque ornare aenean euismod. Commodo odio aenean sed adipiscing diam donec adipiscing. Ornare aenean euismod elementum nisi quis eleifend quam adipiscing vitae. Tincidunt augue interdum velit euismod in pellentesque massa. Nibh mauris cursus mattis molestie a iaculis at. Amet nisl purus in mollis nunc sed id semper risus. Pretium lectus quam id leo in vitae turpis massa sed."}) | |
contents = append(contents, []string{"Cena: 20:00", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ac orci phasellus egestas tellus rutrum tellus pellentesque. Nibh mauris cursus mattis molestie. Proin libero nunc consequat interdum varius sit amet mattis. A pellentesque sit amet porttitor. Et molestie ac feugiat sed. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque. Nascetur ridiculus mus mauris vitae ultricies leo. Sem viverra aliquet eget sit amet tellus cras. Leo a diam sollicitudin tempor id eu nisl nunc. Amet porttitor eget dolor morbi non arcu risus quis. Donec ac odio tempor orci dapibus ultrices in iaculis. Arcu vitae elementum curabitur vitae nunc sed. Nibh tellus molestie nunc non blandit massa enim nec. Arcu risus quis varius quam quisque id diam vel quam. Potenti nullam ac tortor vitae. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Et tortor at risus viverra adipiscing at. Amet nulla facilisi morbi tempus iaculis urna id. Ut enim blandit volutpat maecenas volutpat blandit aliquam. Elit at imperdiet dui accumsan sit amet nulla facilisi morbi. Lectus urna duis convallis convallis tellus id interdum. Mollis aliquam ut porttitor leo a diam. Quisque non tellus orci ac auctor augue mauris augue neque. Quis ipsum suspendisse ultrices gravida dictum fusce ut. Dui accumsan sit amet nulla facilisi morbi tempus iaculis urna. Dis parturient montes nascetur ridiculus mus. In massa tempor nec feugiat nisl. Commodo elit at imperdiet dui accumsan sit. Consectetur adipiscing elit ut aliquam purus sit. Tellus in metus vulputate eu scelerisque. Gravida neque convallis a cras semper. Eu augue ut lectus arcu bibendum at. Mauris pharetra et ultrices neque ornare aenean euismod. Commodo odio aenean sed adipiscing diam donec adipiscing. Ornare aenean euismod elementum nisi quis eleifend quam adipiscing vitae. Tincidunt augue interdum velit euismod in pellentesque massa. Nibh mauris cursus mattis molestie a iaculis at. Amet nisl purus in mollis nunc sed id semper risus. Pretium lectus quam id leo in vitae turpis massa sed."}) | |
contents = append(contents, []string{"Comida Cena: 20:00", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ac orci phasellus egestas tellus rutrum tellus pellentesque. Nibh mauris cursus mattis molestie. Proin libero nunc consequat interdum varius sit amet mattis. A pellentesque sit amet porttitor. Et molestie ac feugiat sed. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla. Fringilla ut morbi tincidunt augue interdum velit euismod in pellentesque. Nascetur ridiculus mus mauris vitae ultricies leo. Sem viverra aliquet eget sit amet tellus cras. Leo a diam sollicitudin tempor id eu nisl nunc. Amet porttitor eget dolor morbi non arcu risus quis. Donec ac odio tempor orci dapibus ultrices in iaculis. Arcu vitae elementum curabitur vitae nunc sed. Nibh tellus molestie nunc non blandit massa enim nec. Arcu risus quis varius quam quisque id diam vel quam. Potenti nullam ac tortor vitae. Enim praesent elementum facilisis leo vel fringilla est ullamcorper. Et tortor at risus viverra adipiscing at. Amet nulla facilisi morbi tempus iaculis urna id. Ut enim blandit volutpat maecenas volutpat blandit aliquam. Elit at imperdiet dui accumsan sit amet nulla facilisi morbi. Lectus urna duis convallis convallis tellus id interdum. Mollis aliquam ut porttitor leo a diam. Quisque non tellus orci ac auctor augue mauris augue neque. Quis ipsum suspendisse ultrices gravida dictum fusce ut. Dui accumsan sit amet nulla facilisi morbi tempus iaculis urna. Dis parturient montes nascetur ridiculus mus. In massa tempor nec feugiat nisl. Commodo elit at imperdiet dui accumsan sit. Consectetur adipiscing elit ut aliquam purus sit. Tellus in metus vulputate eu scelerisque. Gravida neque convallis a cras semper. Eu augue ut lectus arcu bibendum at. Mauris pharetra et ultrices neque ornare aenean euismod. Commodo odio aenean sed adipiscing diam donec adipiscing. Ornare aenean euismod elementum nisi quis eleifend quam adipiscing vitae. Tincidunt augue interdum velit euismod in pellentesque massa. Nibh mauris cursus mattis molestie a iaculis at. Amet nisl purus in mollis nunc sed id semper risus. Pretium lectus quam id leo in vitae turpis massa sed."}) | |
return header, contents | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment