first working self-contained build!

This commit is contained in:
Lumen Keyes 2024-07-10 17:40:06 -06:00
parent 3d4e6cf1bb
commit bc3ff140b1
3 changed files with 3691 additions and 19 deletions

3685
output.pdf

File diff suppressed because it is too large Load Diff

View File

@ -30,7 +30,6 @@ const TextCard = struct {
lines: [][]const u8 = undefined,
};
//dimension constants and defaults
const cardWidth = 30;
const cardHeight = 32;
@ -94,7 +93,7 @@ pub fn main() !void {
var allPrinted = std.ArrayList(u8).init(allocator);
const pdf_doc: *c.pdf_doc = @ptrCast(c.pdf_create(c.PDF_A4_WIDTH, c.PDF_A4_HEIGHT, &c.pdf_info{.creator = ("My Software" ++ " " ** 53).* }).?);
const pdf_doc: *c.pdf_doc = @ptrCast(c.pdf_create(c.PDF_A4_WIDTH, c.PDF_A4_HEIGHT, &c.pdf_info{ .creator = ("My Software" ++ " " ** 53).* }).?);
_ = c.pdf_set_font(pdf_doc, "Times-Roman");
var rowToPrint = std.ArrayList(TextCard).init(allocator);
@ -108,11 +107,27 @@ pub fn main() !void {
} else {
try cardRow.print(allocator, rowToPrint.items, &allPrinted);
std.debug.print("{s}", .{allPrinted.items});
const page = c.pdf_append_page(pdf_doc);
_ = c.pdf_add_text(pdf_doc, page, @ptrCast(allPrinted.items[0..10]), 12, 10, c.PDF_A4_HEIGHT - 12, c.PDF_BLACK);
_ = c.pdf_add_text(pdf_doc, page, "HELLO WEST VIRGINIA", 12, 10, c.PDF_A4_HEIGHT - 12, c.PDF_BLACK);
//TODO (fixme):
// wrong type error when not using ptrCast, nothing printed when using it
// _ = c.pdf_add_text(pdf_doc, page, allPrinted.items[0..50], 12, 10, c.PDF_A4_HEIGHT - 12, c.PDF_BLACK);
// _ = c.pdf_add_text(pdf_doc, page, allPrinted.items[0..50], 12, 10, c.PDF_A4_HEIGHT - 12, c.PDF_BLACK);
// _ = c.pdf_add_text(pdf_doc, page, "HELLO WEST VIRGINIA", 12, 10, c.PDF_A4_HEIGHT - 12, c.PDF_BLACK);
rowToPrint.clearAndFree();
}
var rowsPrinted: f32 = 0;
var page = c.pdf_append_page(pdf_doc);
var textIterator = std.mem.splitAny(u8, allPrinted.items, "\n");
_ = c.pdf_set_font(pdf_doc, "Courier");
while (textIterator.next()) |text| {
if (rowsPrinted < pageHeight) {
rowsPrinted += 1;
_ = c.pdf_add_text(pdf_doc, page, try std.mem.Allocator.dupeZ(allocator, u8, text), 8, 10, c.PDF_A4_HEIGHT - (12 * rowsPrinted), c.PDF_BLACK);
} else {
rowsPrinted = 1;
page = c.pdf_append_page(pdf_doc);
_ = c.pdf_add_text(pdf_doc, page, try std.mem.Allocator.dupeZ(allocator, u8, text), 8, 10, c.PDF_A4_HEIGHT - (12 * rowsPrinted), c.PDF_BLACK);
}
}
_ = c.pdf_save(pdf_doc, "output.pdf");
_ = c.pdf_destroy(pdf_doc);

Binary file not shown.