== HexaPDF Extras
This library contains additional functionality that is not provided by the main
{HexaPDF}[https://hexapdf.gettalong.org] library.
To use it, just require 'hexapdf-extras' and it will update the HexaPDF configuration
settings to make the various extensions available.
Note that you need to install the dependencies of the features you use yourself as they are not
listed in the gem file!
=== QR code Generator
This extension plugs into the graphic objects and boxes system of HexaPDF and allows one to easily
create a fully-scalable QR code:
require 'hexapdf'
require 'hexapdf-extras'
doc = HexaPDF::Document.new
canvas = doc.pages.add.canvas
canvas.draw(:qrcode, at: [100, 100], size: 200, data: "https://hexapdf.gettalong.org")
doc.write('qrcode.pdf')
Underneath the +rqrcode_core+ library is used for actually generating the QR code. This means you
need to install that library for this extension to work.
The +data+ argument can be any data that +rqrcode_core+ understands. The other options understood by
+rqrcode_core+ are also supported.
See
{HexaPDF::Extras::GraphicObject::QRCode}[https://hexapdf-extras.gettalong.org/api/HexaPDF/Extras/GraphicObject/QRCode.html]
and
{HexaPDF::Extras::Layout::QRCodeBox}[https://hexapdf-extras.gettalong.org/api/HexaPDF/Extras/Layout/QRCodeBox.html]
for details.
Note: There was a {bug in poppler}[https://gitlab.freedesktop.org/poppler/poppler/-/issues/1281]
(already fixed) which leads to invalid rendering in Okular (as of 2022-08-06).
=== Barcode Generator
This extensions provides access to generating nearly any kind of barcode. It taps into the graphic
objects and boxes system of HexaPDF to easily allow creating barcodes:
require 'hexapdf'
require 'hexapdf-extras'
doc = HexaPDF::Document.new
canvas = doc.pages.add.canvas
canvas.draw(:barcode, at: [100, 100], width: 300, symbology: :code128, value: "Hello HexaPDF!")
doc.write('zint.pdf')
Underneath the +ruby-zint+ library is used which relies on the libzint library via FFI. This means
that you need to install the +ruby-zint+ library for this extension to work.
See
{HexaPDF::Extras::GraphicObject::Zint}[https://hexapdf-extras.gettalong.org/api/HexaPDF/Extras/GraphicObject/Zint.html]
and
{HexaPDF::Extras::Layout::ZintBox}[https://hexapdf-extras.gettalong.org/api/HexaPDF/Extras/Layout/ZintBox.html]
for details.
=== Swiss QR-bill generator
This extension provides a box class for the document layouting facilities of HexaPDF to easily
create a {Swiss QR-bill}[https://www.six-group.com/en/products-services/banking-services/payment-standardization/standards/qr-bill.html]:
HexaPDF::Composer.create("sample-qr-bill.pdf", margin: 0) do |composer|
data = {
lang: :de,
creditor: {
iban: "CH44 3199 9123 0008 8901 2",
name: "Max Muster & Söhne",
address_line1: "Musterstrasse",
address_line2: "123",
postal_code: "8000",
town: "Seldwyla",
country: "CH",
},
debtor: {
address_type: :combined,
name: "Simon Muster",
address_line1: "Musterstrasse 1",
address_line2: "8000 Seldwyla",
country: "CH"
},
amount: 2500.25,
currency: 'CHF',
}
composer.swiss_qr_bill(data: data, style: {valign: :bottom})
end
See {HexaPDF::Extras::Layout::SwissQRBill}[https://hexapdf-extras.gettalong.org/api/HexaPDF/Extras/Layout/SwissQRBill.html]
for details.