Documentation

Image to PDF Ruby Examples

These examples demonstrate common Image to PDF API workflows in Ruby.


Basic examples

PNG file to PDF file

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Run the conversion and save the result to a file.
    client.convertFileToFile("/path/to/logo.png", "logo.pdf")

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

PNG file to in-memory PDF

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Run the conversion and store the result in the `pdf` variable.
    pdf = client.convertFile("/path/to/logo.png")

    # at this point the "pdf" variable contains PDF raw data and
    # can be sent in an HTTP response, saved to a file, etc.

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

PNG file to PDF stream

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Create an output stream for the conversion result
    output_stream = open("logo.pdf", "wb")

    # run the conversion and write the result to the output stream.
    client.convertFileToStream("/path/to/logo.png", output_stream)

    # Close the output stream.
    output_stream.close()

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

PNG url to PDF file

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Run the conversion and save the result to a file.
    client.convertUrlToFile("https://pdfcrowd.com/static/images/logo.png", "logo.pdf")

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

PNG url to in-memory PDF

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Run the conversion and store the result in the `pdf` variable.
    pdf = client.convertUrl("https://pdfcrowd.com/static/images/logo.png")

    # at this point the "pdf" variable contains PDF raw data and
    # can be sent in an HTTP response, saved to a file, etc.

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

PNG url to PDF stream

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Create an output stream for the conversion result
    output_stream = open("logo.pdf", "wb")

    # run the conversion and write the result to the output stream.
    client.convertUrlToStream("https://pdfcrowd.com/static/images/logo.png", output_stream)

    # Close the output stream.
    output_stream.close()

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

In-memory PNG to PDF file

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Run the conversion and save the result to a file.
    client.convertRawDataToFile(open('/path/to/logo.png', 'rb').read(), "logo.pdf")

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

In-memory PNG to in-memory PDF

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Run the conversion and store the result in the `pdf` variable.
    pdf = client.convertRawData(open('/path/to/logo.png', 'rb').read())

    # at this point the "pdf" variable contains PDF raw data and
    # can be sent in an HTTP response, saved to a file, etc.

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

In-memory PNG to PDF stream

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Create an output stream for the conversion result
    output_stream = open("logo.pdf", "wb")

    # run the conversion and write the result to the output stream.
    client.convertRawDataToStream(open('/path/to/logo.png', 'rb').read(), output_stream)

    # Close the output stream.
    output_stream.close()

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

Get info about the current conversion

require "pdfcrowd"

begin
    # Create an API client instance.
    client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

    # Configure the conversion.
    client.setDebugLog(true)

    # Run the conversion and save the result to a file.
    client.convertFileToFile("/path/to/logo.png", "logo.pdf")
    
    # print URL pointing to the debug log for this request.
    puts "Debug log url: #{client.getDebugLogUrl()}"
    
    # print number of conversion credits remaining in your account.
    puts "Remaining credit count: #{client.getRemainingCreditCount()}"
    
    # print number of credits consumed for this conversion.
    puts "Consumed credit count: #{client.getConsumedCreditCount()}"
    
    # print unique identifier assigned to this conversion job.
    puts "Job id: #{client.getJobId()}"
    
    # print size of the output data in bytes.
    puts "Output size: #{client.getOutputSize()}"

rescue Pdfcrowd::Error => why
    STDERR.puts "PDFCrowd Error: #{why}"
    raise
end

Rails examples

PNG file to PDF in Rails

require "pdfcrowd"

class DemoController < ApplicationController
    def convert
        # The recommended method is POST.
        # may be restricted by ":via => :post" in your routes.rb
        if ! request.post?
            return render text: "POST is allowed only", status: 400
        end

        begin
            # Create an API client instance.
            client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

            # Run the conversion and store the result in the `pdf` variable.
            pdf = client.convertFile("/path/to/logo.png")

            # Send the result and set HTTP response headers.
            send_data pdf,
                      :type => "application/pdf",
                      :disposition => "attachment; filename*=UTF-8''#{ERB::Util.url_encode('logo.pdf')}"
        rescue Pdfcrowd::Error => why
            # Send the error in the HTTP response.
            render plain: why, status: why.getCode()
        end
    end
end

PNG url to PDF in Rails

require "pdfcrowd"

class DemoController < ApplicationController
    def convert
        # The recommended method is POST.
        # may be restricted by ":via => :post" in your routes.rb
        if ! request.post?
            return render text: "POST is allowed only", status: 400
        end

        begin
            # Create an API client instance.
            client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

            # Run the conversion and store the result in the `pdf` variable.
            pdf = client.convertUrl("https://pdfcrowd.com/static/images/logo.png")

            # Send the result and set HTTP response headers.
            send_data pdf,
                      :type => "application/pdf",
                      :disposition => "attachment; filename*=UTF-8''#{ERB::Util.url_encode('logo.pdf')}"
        rescue Pdfcrowd::Error => why
            # Send the error in the HTTP response.
            render plain: why, status: why.getCode()
        end
    end
end

In-memory PNG to PDF in Rails

require "pdfcrowd"

class DemoController < ApplicationController
    def convert
        # The recommended method is POST.
        # may be restricted by ":via => :post" in your routes.rb
        if ! request.post?
            return render text: "POST is allowed only", status: 400
        end

        begin
            # Create an API client instance.
            client = Pdfcrowd::ImageToPdfClient.new("demo", "demo")

            # Run the conversion and store the result in the `pdf` variable.
            pdf = client.convertRawData(open('/path/to/logo.png', 'rb').read())

            # Send the result and set HTTP response headers.
            send_data pdf,
                      :type => "application/pdf",
                      :disposition => "attachment; filename*=UTF-8''#{ERB::Util.url_encode('logo.pdf')}"
        rescue Pdfcrowd::Error => why
            # Send the error in the HTTP response.
            render plain: why, status: why.getCode()
        end
    end
end