Skip to content

Repository files navigation

PDFGen

PDFGen Logo

Buy Me A Coffee

Simple C PDF Creation/Generation library. All contained in a single C-file with header and no external library dependencies.

Useful for embedding into other programs that require rudimentary PDF output.

Supports the following PDF features

  • Text of various fonts/sizes/colours/rotation (including TrueType Fonts)
  • Primitive drawing elements
    • Lines
    • Rectangles
    • Filled Rectangles
    • Polygons
    • Filled Polygons
    • Bezier curves
    • Circles / Ellipses
    • Custom Paths
  • Bookmarks / Links
  • Barcodes
    • Code-128A
    • Code-39
    • EAN-13
    • UPC-A
    • EAN-8
    • UPC-E
    • QR codes
  • Embedded images
    • PPM/PGM/PBM (binary & ASCII formats)
    • JPEG
    • PNG (Alpha Channels are not supported)
    • BMP
  • Password protected/encrypted output (RC4 40-bit)

Example usage

#include"pdfgen.h"intmain(void) {
structpdf_infoinfo= {
.creator="My software",
.producer="My software",
.title="My document",
.author="My name",
.subject="My subject",
.date="Today"
};
structpdf_doc*pdf=pdf_create(PDF_A4_WIDTH, PDF_A4_HEIGHT, &info);
pdf_set_font(pdf, "Times-Roman");
pdf_append_page(pdf);
pdf_add_text(pdf, NULL, "This is text", 12, 50, 20, PDF_BLACK);
pdf_add_line(pdf, NULL, 50, 24, 150, 24, 3, PDF_BLACK);
pdf_save(pdf, "output.pdf");
pdf_destroy(pdf);
return0;
}

License

License: Unlicense

The source here is public domain. If you find it useful, please drop me a line at andre@ignavus.net.

Builds

Build status: GitHub Actions

Code Coverage: Coverage Status

Coverity scan: Coverity scan

Static Analysis

This is a code base that I use to test static analysis tools. As such the build system is quite a bit more complex than should be necessary for a project of this size.

Language Bindings

About

Simple C PDF Writer/Generation library

Topics

Resources

Stars

630 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages