Documentation

PDF to HTML Ruby Examples

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


Basic examples

PDF file to HTML file

require "pdfcrowd"

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

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

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

PDF file to in-memory HTML

require "pdfcrowd"

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

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

    # at this point the "html" variable contains HTML 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

PDF file to HTML stream

require "pdfcrowd"

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

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

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

    # Close the output stream.
    output_stream.close()

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

PDF url to HTML file

require "pdfcrowd"

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

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

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

PDF url to in-memory HTML

require "pdfcrowd"

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

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

    # at this point the "html" variable contains HTML 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

PDF url to HTML stream

require "pdfcrowd"

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

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

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

    # Close the output stream.
    output_stream.close()

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

In-memory PDF to HTML file

require "pdfcrowd"

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

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

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

In-memory PDF to in-memory HTML

require "pdfcrowd"

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

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

    # at this point the "html" variable contains HTML 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 PDF to HTML stream

require "pdfcrowd"

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

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

    # run the conversion and write the result to the output stream.
    client.convertRawDataToStream(open('/path/to/hello_world.pdf', '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::PdfToHtmlClient.new("demo", "demo")

    # Configure the conversion.
    client.setDebugLog(true)

    # Run the conversion and save the result to a file.
    client.convertFileToFile("/path/to/logo.pdf", "logo.html")
    
    # 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 total number of pages in the output document.
    puts "Page count: #{client.getPageCount()}"
    
    # 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

PDF file to HTML 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::PdfToHtmlClient.new("demo", "demo")

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

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

PDF url to HTML 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::PdfToHtmlClient.new("demo", "demo")

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

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

In-memory PDF to HTML 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::PdfToHtmlClient.new("demo", "demo")

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

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