Project

pdfx

0.0
The project is in a healthy, maintained state
A simple and efficient Ruby gem for generating PDFs using the pdfx.fr API with template-based data interpolation
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

Pdfx Ruby Gem

A Ruby wrapper for the pdfx.fr API - the fastest, most eco-friendly PDF generation service for developers.

Installation

Add this line to your application's Gemfile:

gem 'pdfx'

And then execute:

bundle install

Or install it yourself as:

gem install pdfx

Configuration

Configure the gem with your API key:

require 'pdfx'

Pdfx.configure do |config|
  config.api_key = "your-api-key-here"
end

You can also set a custom base URL (useful for testing):

Pdfx.configure do |config|
  config.api_key = "your-api-key-here"
  config.base_url = "https://custom-pdfx-instance.com"
end

Usage

Basic Usage

require 'pdfx'

# Configure globally
Pdfx.configure do |config|
  config.api_key = "your-api-key"
end

# Create a client
client = Pdfx::Client.new

# Generate a PDF
pdf_data = client.generate_pdf(
  template_uuid: "ea99e8b9-1234-5678-90ab-cdef12345678",
  data: {
    invoice: "001",
    customer: "Acme Corp",
    amount: 1299
  }
)

# Save to file
File.write("invoice.pdf", pdf_data)

Using Client-Specific API Key

You can override the global API key for specific clients:

client = Pdfx::Client.new(api_key: "different-api-key")

pdf_data = client.generate_pdf(
  template_uuid: "ea99e8b9-1234-5678-90ab-cdef12345678",
  data: { invoice: "002", customer: "Beta Inc", amount: 2500 }
)

Error Handling

The gem provides specific error classes for different scenarios:

begin
  pdf_data = client.generate_pdf(
    template_uuid: "ea99e8b9-1234-5678-90ab-cdef12345678",
    data: { invoice: "003" }
  )
  File.write("output.pdf", pdf_data)
rescue Pdfx::AuthenticationError => e
  puts "Invalid API key: #{e.message}"
rescue Pdfx::RequestError => e
  puts "Bad request: #{e.message}"
rescue Pdfx::ServerError => e
  puts "Server error: #{e.message}"
rescue Pdfx::NetworkError => e
  puts "Network error: #{e.message}"
rescue Pdfx::Error => e
  puts "General error: #{e.message}"
end

API Reference

Pdfx.configure

Configure the gem globally.

Parameters:

  • api_key (String): Your pdfx.fr API key
  • base_url (String): Base URL for the API (default: "https://pdfx.fr")

Pdfx::Client.new

Create a new client instance.

Parameters:

  • api_key (String, optional): Override the global API key
  • base_url (String, optional): Override the global base URL

client.generate_pdf

Generate a PDF using a template.

Parameters:

  • template_uuid (String, required): The UUID of your template
  • data (Hash, optional): Data to interpolate into the template

Returns: String (PDF binary data)

Raises:

  • Pdfx::AuthenticationError: Invalid API key
  • Pdfx::RequestError: Invalid request parameters
  • Pdfx::ServerError: Server error (5xx)
  • Pdfx::NetworkError: Network connectivity issues

Error Classes

  • Pdfx::Error - Base error class
  • Pdfx::AuthenticationError - Invalid API key (401)
  • Pdfx::RequestError - Bad request (400)
  • Pdfx::ServerError - Server error (5xx)
  • Pdfx::NetworkError - Network connectivity issues

Development

After checking out the repo, run bundle install to install dependencies.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/solisoft/pdfx-gem.

License

The gem is available as open source under the terms of the MIT License.

About pdfx.fr

pdfx.fr is a blazing-fast PDF generation API that:

  • Generates PDFs in sub-100ms
  • Supports Factur-X/ZUGFeRD e-invoicing
  • Stores zero data (privacy by design)
  • Runs on 100% renewable energy
  • Offers 200 free PDFs per month

Visit pdfx.fr to create your account and get your API key.