Module: InvoicePrinter

Defined in:
lib/invoice_printer.rb,
lib/invoice_printer/version.rb,
lib/invoice_printer/document.rb,
lib/invoice_printer/pdf_document.rb,
lib/invoice_printer/document/item.rb

Overview

Create PDF versions of invoices or receipts using Prawn

Example:

invoice = InvoicePrinter::Document.new(...)
InvoicePrinter.print(
  document: invoice,
  font: 'path-to-font-file.ttf',
  bold_font: 'path-to-font-file.ttf',
  stamp: 'stamp.jpg',
  logo: 'logo.jpg',
  file_name: 'invoice.pdf'
)

Defined Under Namespace

Classes: Document, PDFDocument

Constant Summary collapse

VERSION =
'2.3.0'

Class Method Summary collapse

Class Method Details

.labelsObject



60
61
62
# File 'lib/invoice_printer.rb', line 60

def self.labels
  PDFDocument.labels
end

.labels=(labels) ⇒ Object

Override default English labels with a given hash

Example:

InvoicePrinter.labels = {
  name: 'Invoice',
  number: '201604030001'
  provider: 'Provider',
  purchaser: 'Purchaser',
  payment: 'Payment',
  payment_by_transfer: 'Payment by bank transfer on the account below:',
  payment_in_cash: 'Payment in cash',
  account_number: 'Account NO:',
  swift: 'SWIFT:',
  iban: 'IBAN:',
  issue_date: 'Issue date:',
  due_date: 'Due date:',
  variable_symbol: 'Variable symbol:'
  item: 'Item',
  quantity: 'Quantity',
  unit: 'Unit',
  price_per_item: 'Price per item',
  amount: 'Amount'
}

You can denote the details or translations of labels by using sublabels. To set a sublabel for a label, just assign it under sublabels e.g.

InvoicePrinter.labels = {
  ...
  sublabels: { tax: 'Daň', amount: 'Celkem' }
}


56
57
58
# File 'lib/invoice_printer.rb', line 56

def self.labels=(labels)
  PDFDocument.labels = labels
end

Print the given InvoicePrinter::Document to PDF file named file_name

document - InvoicePrinter::Document object labels - labels to override font - font file to use bold_font - bold font file to use stamp - stamp & signature (image) logo - logotype (image) background - background (image) page_size - :letter or :a4 file_name - output file



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/invoice_printer.rb', line 75

def self.print(
  document:,
  labels: {},
  font: nil,
  bold_font: nil,
  stamp: nil,
  logo: nil,
  background: nil,
  page_size: :letter,
  file_name:
)
  PDFDocument.new(
    document: document,
    labels: labels,
    font: font,
    bold_font: bold_font,
    stamp: stamp,
    logo: ,
    background: background,
    page_size: page_size
  ).print(file_name)
end

.render(document:, labels: {}, font: nil, bold_font: nil, stamp: nil, logo: nil, background: nil, page_size: :letter) ⇒ Object

Render the PDF document InvoicePrinter::Document to PDF directly

document - InvoicePrinter::Document object labels - labels to override font - font file to use bold_font - bold font file to use stamp - stamp & signature (image) logo - logotype (image) background - background (image) page_size - :letter or :a4



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/invoice_printer.rb', line 108

def self.render(
  document:,
  labels: {},
  font: nil,
  bold_font: nil,
  stamp: nil,
  logo: nil,
  background: nil,
  page_size: :letter
)
  PDFDocument.new(
    document: document,
    labels: labels,
    font: font,
    bold_font: bold_font,
    stamp: stamp,
    logo: ,
    background: background,
    page_size: page_size
  ).render
end