|
1 | 1 | local app = { |
2 | 2 | index = function() |
3 | | - PDFGenerator = require("pdfgenerator") |
4 | | - |
5 | | -local pdf = PDFGenerator.new({header_height = 50}) |
6 | | - |
7 | | -pdf:setHeader(function(pageId) |
8 | | - pdf:addParagraph("Header - redbean.com PDF Generator - %s on %d" % { pageId, pdf:totalPage(self) }, { fontSize = 16, alignment = "left", newPage = false }) |
9 | | - pdf:drawLine(50, 842-50, 595 - 50, 842-50, 1) |
10 | | -end) |
11 | | - |
12 | | --- Add a page (default A4 size) |
13 | | -pdf:addPage() |
14 | | ---pdf:addCustomFont("fonts/Helvetica.ttf", "helvetica", "normal") |
15 | | ---pdf:addCustomFont("fonts/Helvetica-Bold.ttf", "helvetica", "bold") |
16 | | -pdf:addCustomFont("fonts/TitilliumWeb-Regular.ttf", "titillium", "normal") |
17 | | -pdf:addCustomFont("fonts/TitilliumWeb-Bold.ttf", "titillium", "bold") |
18 | | - |
19 | | - |
20 | | ---local imgName = pdf:addImage(LoadAsset("usa.jpeg"), 1567, 444, "jpeg") |
21 | | ---pdf:drawImage(imgName) |
22 | | - |
23 | | --- Add some text |
24 | | -pdf:addParagraph([[ |
25 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
26 | | -]], { fontSize = 15, alignment = "justify", fontWeight = "bold" }) |
27 | | - |
28 | | -pdf:moveY(10) |
29 | | - |
30 | | -pdf:addParagraph([[ |
31 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
32 | | -]], { fontSize = 15, alignment = "justify", fontWeight = "normal" }) |
33 | | - |
34 | | -pdf:moveY(10) |
35 | | - |
36 | | -pdf:addParagraph([[ |
37 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
38 | | -]], { fontSize = 10, alignment = "right" }) |
39 | | - |
40 | | -pdf:moveY(10) |
41 | | - |
42 | | -pdf:addParagraph([[ |
43 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
44 | | -]], { fontSize = 10, alignment = "center" }) |
45 | | - |
46 | | -pdf:moveY(10) |
47 | | - |
48 | | -pdf:addParagraph([[ |
49 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
50 | | -]], { fontSize = 10, alignment = "left" }) |
51 | | - |
52 | | -pdf:moveY(10) |
53 | | - |
54 | | -local headerColumns = { |
55 | | - { text = "Label", width = 305, fontSize = 10, alignment = "left", borderSides = { right = "false" } }, |
56 | | - { text = "UnitPrice", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false", right = "false" } }, |
57 | | - { text = "Qty", width = 50, fontSize = 10, alignment = "center", borderSides = { left = "false", right = "false" } }, |
58 | | - { text = "Total Price", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false" } } |
59 | | -} |
| 3 | + Page("welcome/index", "app") |
| 4 | + -- or |
| 5 | + -- WriteJSON({ demo = true }) |
| 6 | + end, |
60 | 7 |
|
61 | | -local dataColumns = {} |
62 | | -for i = 1, 3 do |
63 | | - table.insert(dataColumns, { |
64 | | - { text = "Mac Mini M4 pro " .. i, width = 305, fontSize = 10, alignment = "left", borderSides = { right = "false" } }, |
65 | | - { text = "$700", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false", right = "false" } }, |
66 | | - { text = "2", width = 50, fontSize = 10, alignment = "center", borderSides = { left = "false", right = "false" } }, |
67 | | - { text = "$1400", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false" } } |
68 | | - }) |
69 | | -end |
70 | | - |
71 | | -pdf:drawTable({ |
72 | | - header_columns = headerColumns, |
73 | | - data_columns = dataColumns, |
74 | | - header_options = { fillColor = "eee", borderColor = "eee" }, |
75 | | - data_options = { fillColor = "fff", borderColor = "eee" } |
76 | | -}, { padding_x = 5, padding_y = 5 }) |
77 | | - |
78 | | -pdf:moveY(10) |
79 | | - |
80 | | -local dataColumns = {} |
81 | | -for i = 1, 10 do |
82 | | - table.insert(dataColumns, { |
83 | | - { text = "Mac Mini M4 pro Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis l" .. i, width = 305, fontSize = 10, alignment = "left" }, |
84 | | - { text = "$700", width = 70, fontSize = 10, alignment = "right" }, |
85 | | - { text = "2", width = 50, fontSize = 10, alignment = "center" }, |
86 | | - { text = "$1400", width = 70, fontSize = 10, alignment = "right" } |
87 | | - }) |
88 | | -end |
89 | | - |
90 | | -pdf:drawTable({ |
91 | | - header_columns = headerColumns, |
92 | | - data_columns = dataColumns, |
93 | | - header_options = { fillColor = "000", borderColor = "000", textColor = "fff" }, |
94 | | - data_options = { fillColor = "fff", borderColor = "eee", oddFillColor = "fafafa", evenFillColor = "fff" } |
95 | | -}, { padding_x = 5, padding_y = 2 }) |
96 | | - |
97 | | -for i = 1, 1 do |
98 | | - pdf:moveY(10) |
99 | | - pdf:addParagraph([[ |
100 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
101 | | -
|
102 | | - Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
103 | | - ]], { fontSize = 10, alignment = "justify", fontWeight = "bold" }) |
104 | | -end |
105 | | - |
106 | | -SetHeader("Content-Type", "application/pdf") |
107 | | -Write(pdf:generate()) |
| 8 | + pdf = function() |
| 9 | + PDFGenerator = require("pdfgenerator") |
108 | 10 |
|
| 11 | + local pdf = PDFGenerator.new({header_height = 50}) |
| 12 | + |
| 13 | + pdf:setHeader(function(pageId) |
| 14 | + pdf:addParagraph("Header - redbean.com PDF Generator - %s on %d" % { pageId, pdf:totalPage(self) }, { fontSize = 16, alignment = "left", newPage = false }) |
| 15 | + pdf:drawLine(50, 842-50, 595 - 50, 842-50, 1) |
| 16 | + end) |
| 17 | + |
| 18 | + -- Add a page (default A4 size) |
| 19 | + pdf:addPage() |
| 20 | + --pdf:addCustomFont("fonts/Helvetica.ttf", "helvetica", "normal") |
| 21 | + --pdf:addCustomFont("fonts/Helvetica-Bold.ttf", "helvetica", "bold") |
| 22 | + pdf:addCustomFont("fonts/TitilliumWeb-Regular.ttf", "titillium", "normal") |
| 23 | + pdf:addCustomFont("fonts/TitilliumWeb-Bold.ttf", "titillium", "bold") |
| 24 | + |
| 25 | + |
| 26 | + --local imgName = pdf:addImage(LoadAsset("usa.jpeg"), 1567, 444, "jpeg") |
| 27 | + --pdf:drawImage(imgName) |
| 28 | + |
| 29 | + -- Add some text |
| 30 | + pdf:addParagraph([[ |
| 31 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 32 | + ]], { fontSize = 15, alignment = "justify", fontWeight = "bold" }) |
| 33 | + |
| 34 | + pdf:moveY(10) |
| 35 | + |
| 36 | + pdf:addParagraph([[ |
| 37 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 38 | + ]], { fontSize = 15, alignment = "justify", fontWeight = "normal" }) |
| 39 | + |
| 40 | + pdf:moveY(10) |
| 41 | + |
| 42 | + pdf:addParagraph([[ |
| 43 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 44 | + ]], { fontSize = 10, alignment = "right" }) |
| 45 | + |
| 46 | + pdf:moveY(10) |
| 47 | + |
| 48 | + pdf:addParagraph([[ |
| 49 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 50 | + ]], { fontSize = 10, alignment = "center" }) |
| 51 | + |
| 52 | + pdf:moveY(10) |
| 53 | + |
| 54 | + pdf:addParagraph([[ |
| 55 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 56 | + ]], { fontSize = 10, alignment = "left" }) |
| 57 | + |
| 58 | + pdf:moveY(10) |
| 59 | + |
| 60 | + local headerColumns = { |
| 61 | + { text = "Label", width = 305, fontSize = 10, alignment = "left", borderSides = { right = "false" } }, |
| 62 | + { text = "UnitPrice", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false", right = "false" } }, |
| 63 | + { text = "Qty", width = 50, fontSize = 10, alignment = "center", borderSides = { left = "false", right = "false" } }, |
| 64 | + { text = "Total Price", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false" } } |
| 65 | + } |
| 66 | + |
| 67 | + local dataColumns = {} |
| 68 | + for i = 1, 3 do |
| 69 | + table.insert(dataColumns, { |
| 70 | + { text = "Mac Mini M4 pro " .. i, width = 305, fontSize = 10, alignment = "left", borderSides = { right = "false" } }, |
| 71 | + { text = "$700", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false", right = "false" } }, |
| 72 | + { text = "2", width = 50, fontSize = 10, alignment = "center", borderSides = { left = "false", right = "false" } }, |
| 73 | + { text = "$1400", width = 70, fontSize = 10, alignment = "right", borderSides = { left = "false" } } |
| 74 | + }) |
| 75 | + end |
| 76 | + |
| 77 | + pdf:drawTable({ |
| 78 | + header_columns = headerColumns, |
| 79 | + data_columns = dataColumns, |
| 80 | + header_options = { fillColor = "eee", borderColor = "eee" }, |
| 81 | + data_options = { fillColor = "fff", borderColor = "eee" } |
| 82 | + }, { padding_x = 5, padding_y = 5 }) |
| 83 | + |
| 84 | + pdf:moveY(10) |
| 85 | + |
| 86 | + local dataColumns = {} |
| 87 | + for i = 1, 10 do |
| 88 | + table.insert(dataColumns, { |
| 89 | + { text = "Mac Mini M4 pro Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis l" .. i, width = 305, fontSize = 10, alignment = "left" }, |
| 90 | + { text = "$700", width = 70, fontSize = 10, alignment = "right" }, |
| 91 | + { text = "2", width = 50, fontSize = 10, alignment = "center" }, |
| 92 | + { text = "$1400", width = 70, fontSize = 10, alignment = "right" } |
| 93 | + }) |
| 94 | + end |
| 95 | + |
| 96 | + pdf:drawTable({ |
| 97 | + header_columns = headerColumns, |
| 98 | + data_columns = dataColumns, |
| 99 | + header_options = { fillColor = "000", borderColor = "000", textColor = "fff" }, |
| 100 | + data_options = { fillColor = "fff", borderColor = "eee", oddFillColor = "fafafa", evenFillColor = "fff" } |
| 101 | + }, { padding_x = 5, padding_y = 2 }) |
| 102 | + |
| 103 | + for i = 1, 1 do |
| 104 | + pdf:moveY(10) |
| 105 | + pdf:addParagraph([[ |
| 106 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 107 | +
|
| 108 | + Morbi ultrices pharetra risus sed pellentesque. Integer id semper erat. Duis lobortis mollis erat, id commodo orci lobortis ut. Sed laoreet libero sed lorem sagittis, et lacinia arcu efficitur. Curabitur eu scelerisque elit. Aenean enim turpis, congue nec ipsum non, dapibus laoreet ex. Cras viverra congue tortor vitae rutrum. |
| 109 | + ]], { fontSize = 10, alignment = "justify", fontWeight = "bold", color = "FF0000" }) |
| 110 | + end |
| 111 | + |
| 112 | + SetHeader("Content-Type", "application/pdf") |
| 113 | + Write(pdf:generate()) |
109 | 114 | end, |
110 | 115 | } |
111 | 116 |
|
|
0 commit comments