Awesome
PDFGen
<img src="/docs/pdfgen_logo.png" alt="PDFGen Logo" width="200" align="right"/><a href="https://www.buymeacoffee.com/EstIgnavus" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"></a>
Simple C PDF Creation/Generation library. All contained 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
- Primitive drawing elements
- Lines
- Rectangles
- Filled Rectangles
- Polygons
- Filled Polygons
- Bezier curves
- Bookmarks
- Barcodes (Code-128 & Code-39)
- Embedded images
- PPM/PGM (binary format only)
- JPEG
- PNG (Alpha Channels are not supported)
- BMP
Example usage
#include "pdfgen.h"
int main(void) {
struct pdf_info info = {
.creator = "My software",
.producer = "My software",
.title = "My document",
.author = "My name",
.subject = "My subject",
.date = "Today"
};
struct pdf_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);
return 0;
}
License
The source here is public domain. If you find it useful, please drop me a line at andre@ignavus.net.
Builds
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.