Documentation

PDF to Image Python Examples

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


Basic examples

PDF file to PNG file

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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')

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

PDF file to in-memory PNG

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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.

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

PDF file to PNG stream

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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()

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

PDF url to PNG file

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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')

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

PDF url to in-memory PNG

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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.

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

PDF url to PNG stream

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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()

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

In-memory PDF to PNG file

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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')

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

In-memory PDF to in-memory PNG

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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.

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

In-memory PDF to PNG stream

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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()

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

Get info about the current conversion

import pdfcrowd
import sys

try:
    # Create an API client instance.
    client = pdfcrowd.PdfToImageClient('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.
    print('Debug log url: {}'.format(client.getDebugLogUrl()))
    
    # print number of conversion credits remaining in your account.
    print('Remaining credit count: {}'.format(client.getRemainingCreditCount()))
    
    # print number of credits consumed for this conversion.
    print('Consumed credit count: {}'.format(client.getConsumedCreditCount()))
    
    # print unique identifier assigned to this conversion job.
    print('Job id: {}'.format(client.getJobId()))
    
    # print total number of pages in the output document.
    print('Page count: {}'.format(client.getPageCount()))
    
    # print size of the output data in bytes.
    print('Output size: {}'.format(client.getOutputSize()))

except pdfcrowd.Error as why:
    sys.stderr.write('PDFCrowd Error: {}\n'.format(why))
    raise

Django examples

PDF file to PNG in Django

import urllib.parse
from django.http import HttpResponse
from django.views.decorators.http import require_POST
import pdfcrowd

# The recommended method is POST.
@require_POST
def convert(request):
    try:
        # Create an API client instance.
        client = pdfcrowd.PdfToImageClient('demo', 'demo')

        # If unsure whether the input is a single-page file, enforce ZIP output.
        client.setOutputFormat('png')
        client.setForceZip(True)

        # Set HTTP response headers.
        response = HttpResponse(content_type='image/png')
        response['Cache-Control'] = 'max-age=0'
        response['Accept-Ranges'] = 'none'
        response['Content-Disposition'] = "attachment; filename*=UTF-8''" + urllib.parse.quote('invoice.zip', safe='')

        # run the conversion and write the result to the output stream.
        client.convertFileToStream('/path/to/invoice.pdf', response)
        return response
    except pdfcrowd.Error as why:
        # Send the error in the HTTP response.
        return HttpResponse(
            why, status=why.getStatusCode(), content_type='text/plain')

PDF url to PNG in Django

import urllib.parse
from django.http import HttpResponse
from django.views.decorators.http import require_POST
import pdfcrowd

# The recommended method is POST.
@require_POST
def convert(request):
    try:
        # Create an API client instance.
        client = pdfcrowd.PdfToImageClient('demo', 'demo')

        # If unsure whether the input is a single-page file, enforce ZIP output.
        client.setOutputFormat('png')
        client.setForceZip(True)

        # Set HTTP response headers.
        response = HttpResponse(content_type='image/png')
        response['Cache-Control'] = 'max-age=0'
        response['Accept-Ranges'] = 'none'
        response['Content-Disposition'] = "attachment; filename*=UTF-8''" + urllib.parse.quote('invoice.zip', safe='')

        # run the conversion and write the result to the output stream.
        client.convertUrlToStream('https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf', response)
        return response
    except pdfcrowd.Error as why:
        # Send the error in the HTTP response.
        return HttpResponse(
            why, status=why.getStatusCode(), content_type='text/plain')

In-memory PDF to PNG in Django

import urllib.parse
from django.http import HttpResponse
from django.views.decorators.http import require_POST
import pdfcrowd

# The recommended method is POST.
@require_POST
def convert(request):
    try:
        # Create an API client instance.
        client = pdfcrowd.PdfToImageClient('demo', 'demo')

        # If unsure whether the input is a single-page file, enforce ZIP output.
        client.setOutputFormat('png')
        client.setForceZip(True)

        # Set HTTP response headers.
        response = HttpResponse(content_type='image/png')
        response['Cache-Control'] = 'max-age=0'
        response['Accept-Ranges'] = 'none'
        response['Content-Disposition'] = "attachment; filename*=UTF-8''" + urllib.parse.quote('invoice.zip', safe='')

        # run the conversion and write the result to the output stream.
        client.convertRawDataToStream(open('/path/to/hello_world.pdf', 'rb').read(), response)
        return response
    except pdfcrowd.Error as why:
        # Send the error in the HTTP response.
        return HttpResponse(
            why, status=why.getStatusCode(), content_type='text/plain')

Flask examples

PDF file to PNG in Flask

import urllib.parse
from flask import Flask, Response
import pdfcrowd

app = Flask(__name__)

# The recommended method is POST.
@app.route('/', methods=['POST'])
def convert():
    try:
        # Create an API client instance.
        client = pdfcrowd.PdfToImageClient('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.
        response = Response(png, mimetype='image/png')
        response.headers['Cache-Control'] = 'max-age=0'
        response.headers['Accept-Ranges'] = 'none'
        response.headers['Content-Disposition'] = "attachment; filename*=UTF-8''" + urllib.parse.quote('invoice.zip', safe='')
        return response
    except pdfcrowd.Error as why:
        # Send the error in the HTTP response.
        return Response(
            str(why), status=why.getStatusCode(), mimetype='text/plain')

PDF url to PNG in Flask

import urllib.parse
from flask import Flask, Response
import pdfcrowd

app = Flask(__name__)

# The recommended method is POST.
@app.route('/', methods=['POST'])
def convert():
    try:
        # Create an API client instance.
        client = pdfcrowd.PdfToImageClient('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.
        response = Response(png, mimetype='image/png')
        response.headers['Cache-Control'] = 'max-age=0'
        response.headers['Accept-Ranges'] = 'none'
        response.headers['Content-Disposition'] = "attachment; filename*=UTF-8''" + urllib.parse.quote('invoice.zip', safe='')
        return response
    except pdfcrowd.Error as why:
        # Send the error in the HTTP response.
        return Response(
            str(why), status=why.getStatusCode(), mimetype='text/plain')

In-memory PDF to PNG in Flask

import urllib.parse
from flask import Flask, Response
import pdfcrowd

app = Flask(__name__)

# The recommended method is POST.
@app.route('/', methods=['POST'])
def convert():
    try:
        # Create an API client instance.
        client = pdfcrowd.PdfToImageClient('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.
        response = Response(png, mimetype='image/png')
        response.headers['Cache-Control'] = 'max-age=0'
        response.headers['Accept-Ranges'] = 'none'
        response.headers['Content-Disposition'] = "attachment; filename*=UTF-8''" + urllib.parse.quote('invoice.zip', safe='')
        return response
    except pdfcrowd.Error as why:
        # Send the error in the HTTP response.
        return Response(
            str(why), status=why.getStatusCode(), mimetype='text/plain')