Invoice++
Loading...
Searching...
No Matches
invoice.h
Go to the documentation of this file.
1#ifndef INVOICE_H
2#define INVOICE_H
3#include <hpdf.h>
4
5#include "pdf_utils.h"
7
8
9class Invoice {
10public:
11 explicit Invoice(const std::shared_ptr<InvoiceData> &invoice_data) {
12 this->invoice_data = invoice_data;
13 this->pdf = HPDF_New(error_handler, nullptr);
14 if (!pdf) {
15 throw std::runtime_error("Error: cannot create PdfDoc object");
16 }
17 this->font_normal = HPDF_GetFont(pdf, "Helvetica", "WinAnsiEncoding");
18 this->font_bold = HPDF_GetFont(pdf, "Helvetica-Bold", "WinAnsiEncoding");
20 }
21 HPDF_Doc pdf;
22
26 std::string generate();
27private:
28
31 HPDF_Page _generateNewPage();
32
34 void _generateFooter(HPDF_Page page) const;
35
37 void _generatePageNumbers() const;
38
39 std::shared_ptr<InvoiceData> invoice_data{};
40 std::list<HPDF_Page> pages{};
41 float line_height_factor = 1.2;
42 HPDF_PageSizes page_size = HPDF_PAGE_SIZE_A4;
43 HPDF_PageDirection page_direction = HPDF_PAGE_PORTRAIT;
44 float padding_left = 55;
45 float padding_right = 55;
46 float padding_top = 55;
47 float padding_bottom = 65;
48 HPDF_REAL current_height;
49 HPDF_Font font_normal;
50 HPDF_Font font_bold;
51};
52
53
54
55#endif //INVOICE_H
HPDF_REAL current_height
Definition invoice.h:48
std::list< HPDF_Page > pages
Definition invoice.h:40
std::shared_ptr< InvoiceData > invoice_data
Definition invoice.h:39
float padding_top
Definition invoice.h:46
void _generatePageNumbers() const
print page numbering on all pages
Definition invoice.cpp:46
HPDF_PageDirection page_direction
Definition invoice.h:43
std::string generate()
generate a PDF invoice and save it to the users downloads folder as the invoice_number....
Definition invoice.cpp:54
float padding_left
Definition invoice.h:44
HPDF_Doc pdf
Definition invoice.h:21
HPDF_PageSizes page_size
Definition invoice.h:42
HPDF_Font font_bold
Definition invoice.h:50
float padding_right
Definition invoice.h:45
void _generateFooter(HPDF_Page page) const
prints the footer on the current pdf page, excluding the page number
Definition invoice.cpp:17
HPDF_Font font_normal
Definition invoice.h:49
float padding_bottom
Definition invoice.h:47
Invoice(const std::shared_ptr< InvoiceData > &invoice_data)
Definition invoice.h:11
HPDF_Page _generateNewPage()
create a new page and add to pages list
Definition invoice.cpp:8
float line_height_factor
Definition invoice.h:41
void error_handler(const HPDF_STATUS error_no, const HPDF_STATUS detail_no, void *user_data)
libharu error handler
Definition pdf_utils.h:14