zcatpdf/examples/hello.zig
reugenio f09922076f refactor: Rename zpdf to zcatpdf for consistency with zcat* family
- Renamed all references from zpdf to zcatpdf
- Module import: @import("zcatpdf")
- Consistent with zcatui, zcatgui naming convention
- All lowercase per Zig standards

Note: Directory rename (zpdf -> zcatpdf) and Forgejo repo rename
should be done manually after this commit.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-09 02:10:57 +01:00

74 lines
2.3 KiB
Zig

//! Minimal PDF example - Hello World
const std = @import("std");
const pdf = @import("zcatpdf");
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
std.debug.print("zcatpdf - Hello World example\n", .{});
// Create document
var doc = pdf.Document.init(allocator);
defer doc.deinit();
// Add a page
var page = try doc.addPage(.a4);
// Title
try page.setFont(.helvetica_bold, 36);
page.setFillColor(pdf.Color.rgb(0, 100, 200));
try page.drawText(50, 750, "Hello, PDF!");
// Subtitle
try page.setFont(.helvetica, 14);
page.setFillColor(pdf.Color.medium_gray);
try page.drawText(50, 710, "Generated with zcatpdf - Pure Zig PDF library");
// Draw a line
try page.setLineWidth(1);
page.setStrokeColor(pdf.Color.light_gray);
try page.drawLine(50, 700, 545, 700);
// Body text
try page.setFont(.times_roman, 12);
page.setFillColor(pdf.Color.black);
try page.drawText(50, 670, "This PDF was generated entirely in Zig with zero external dependencies.");
try page.drawText(50, 655, "The zcatpdf library supports:");
try page.drawText(70, 635, "- Multiple fonts (Helvetica, Times, Courier)");
try page.drawText(70, 620, "- Colors (RGB)");
try page.drawText(70, 605, "- Lines and rectangles");
try page.drawText(70, 590, "- Multiple pages");
// Draw some shapes
try page.setLineWidth(2);
page.setStrokeColor(pdf.Color.blue);
page.setFillColor(pdf.Color.rgb(230, 240, 255));
try page.drawFilledRect(50, 500, 200, 60);
try page.setFont(.helvetica_bold, 14);
page.setFillColor(pdf.Color.blue);
try page.drawText(60, 540, "Shapes work too!");
// Red rectangle
page.setStrokeColor(pdf.Color.red);
page.setFillColor(pdf.Color.rgb(255, 230, 230));
try page.drawFilledRect(280, 500, 200, 60);
page.setFillColor(pdf.Color.red);
try page.drawText(290, 540, "Multiple colors!");
// Footer
try page.setFont(.courier, 10);
page.setFillColor(pdf.Color.medium_gray);
try page.drawText(50, 50, "zcatpdf v0.1.0 - https://git.reugenio.com/reugenio/zcatpdf");
// Save
const filename = "hello.pdf";
try doc.saveToFile(filename);
std.debug.print("Created: {s}\n", .{filename});
std.debug.print("Done!\n", .{});
}