Skip to content

Commit a4560db

Browse files
author
Olivier Bonnaure
committed
fix: new route for pdf demo
1 parent 4f4ace3 commit a4560db

File tree

2 files changed

+110
-105
lines changed

2 files changed

+110
-105
lines changed

app/controllers/welcome_controller.lua

Lines changed: 109 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,116 @@
11
local app = {
22
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,
607

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")
10810

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())
109114
end,
110115
}
111116

config/routes.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Routes = { ["GET"] = { [""] = "welcome#index" } } --define root
1+
Routes = { ["GET"] = { [""] = "welcome#index", ["pdf"] = "welcome#pdf" } } --define root
22

33
CustomRoute("POST", "/upload/:collection/:key/:field", "uploads#upload")
44
CustomRoute("GET", "/o/:uuid/:format", "uploads#original_image")

0 commit comments

Comments
 (0)