PDF to Image Ruby Examples
These examples demonstrate common PDF to Image API workflows in Ruby.
Basic examples
PDF file to PNG file
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and save the result to a file. client.convertFileToFile("/path/to/invoice.pdf", "invoice.zip") rescue Pdfcrowd::Error => why STDERR.puts "PDFCrowd Error: #{why}" raise end
PDF file to in-memory PNG
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and store the result in the `png` variable. png = client.convertFile("/path/to/invoice.pdf") # at this point the "png" variable contains PNG 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 PNG stream
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Create an output stream for the conversion result output_stream = open("invoice.zip", "wb") # run the conversion and write the result to the output stream. client.convertFileToStream("/path/to/invoice.pdf", output_stream) # Close the output stream. output_stream.close() rescue Pdfcrowd::Error => why STDERR.puts "PDFCrowd Error: #{why}" raise end
PDF url to PNG file
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and save the result to a file. client.convertUrlToFile("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf", "invoice.zip") rescue Pdfcrowd::Error => why STDERR.puts "PDFCrowd Error: #{why}" raise end
PDF url to in-memory PNG
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and store the result in the `png` variable. png = client.convertUrl("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf") # at this point the "png" variable contains PNG 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 PNG stream
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Create an output stream for the conversion result output_stream = open("invoice.zip", "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 PNG file
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and save the result to a file. client.convertRawDataToFile(open('/path/to/hello_world.pdf', 'rb').read(), "invoice.zip") rescue Pdfcrowd::Error => why STDERR.puts "PDFCrowd Error: #{why}" raise end
In-memory PDF to in-memory PNG
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and store the result in the `png` variable. png = client.convertRawData(open('/path/to/hello_world.pdf', 'rb').read()) # at this point the "png" variable contains PNG 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 PNG stream
require "pdfcrowd" begin # Create an API client instance. client = Pdfcrowd::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Create an output stream for the conversion result output_stream = open("invoice.zip", "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::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setDebugLog(true) client.setForceZip(true) # Run the conversion and save the result to a file. client.convertFileToFile("/path/to/invoice.pdf", "invoice.zip") # 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 PNG 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::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and store the result in the `png` variable. png = client.convertFile("/path/to/invoice.pdf") # Send the result and set HTTP response headers. send_data png, :type => "image/png", :disposition => "attachment; filename*=UTF-8''#{ERB::Util.url_encode('invoice.zip')}" rescue Pdfcrowd::Error => why # Send the error in the HTTP response. render plain: why, status: why.getCode() end end end
PDF url to PNG 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::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and store the result in the `png` variable. png = client.convertUrl("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf") # Send the result and set HTTP response headers. send_data png, :type => "image/png", :disposition => "attachment; filename*=UTF-8''#{ERB::Util.url_encode('invoice.zip')}" rescue Pdfcrowd::Error => why # Send the error in the HTTP response. render plain: why, status: why.getCode() end end end
In-memory PDF to PNG 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::PdfToImageClient.new("demo", "demo") # If unsure whether the input is a single-page file, enforce ZIP output. client.setOutputFormat("png") client.setForceZip(true) # Run the conversion and store the result in the `png` variable. png = client.convertRawData(open('/path/to/hello_world.pdf', 'rb').read()) # Send the result and set HTTP response headers. send_data png, :type => "image/png", :disposition => "attachment; filename*=UTF-8''#{ERB::Util.url_encode('invoice.zip')}" rescue Pdfcrowd::Error => why # Send the error in the HTTP response. render plain: why, status: why.getCode() end end end