Custom Python wrapper for PDF library integration

There are three ways to use Apryse with Python:

  • Use pip - the precompiled library for Python 2.7.x.
  • Use pip - the precompiled library for Python 3.x.
  • (less common) Use PDFNet bindings to build your own wrappers.

This guide will help you get started by building your own wrapper. You can find more information about using the precompiled library

Custom Python wrapper & Linux PDF library integration

This guide will help you run Apryse samples and integrate a free trial of the Apryse SDK into Python applications on Linux. Your free trial includes unlimited trial usage and support from solution engineers.

Prerequisites

  • Python3 or Python2 with developer extensions
  • CMake version ≥ 2.8
  • SWIG 2.0.4 - 2.0.12 or SWIG 3.0.12 or SWIG 4.0.2 and above
  • Apryse SDK for Linux:

Run Apryse SDK in production

A commercial license key is required for use in a production environment. Please contact sales to purchase a commercial key or if you need any other license key assistance.

Keep your commercial license key confidential.

License keys are uniquely generated. Please make sure that it is not publicly available (e.g. in your public GitHub).

Initial setup

  1. Make a directory to store the wrappers and navigate into that directory.
  2. Clone the uncompiled PDFNet wrappers project by executing

sh

1git clone https://github.com/PDFTron/PDFNetWrappers
  1. Navigate to PDFNetWrappers/PDFNetC and download the PDFNet C/C++ SDK into that directory. Ensure you obtain the right architecture for your Python interpreter. For example, if your interpreter is 64bit (which this guide will assume), execute

sh

1wget http://www.pdftron.com/downloads/PDFNetC64.tar.gz
  1. Unpack PDFNetC64.tar.gz by tar xvzf PDFNetC64.tar.gz, then executeandto move the PDFNet libraries in place.You can delete PDFNetC64.tar.gz to free up space.Your /PDFNetC folder should be laid out like this like this:

sh

1mv PDFNetC64/Headers/ .

sh

1mv PDFNetC64/Lib/ .

sh

1PDFNetC
2├── Headers
3├── Lib
4├── PDFNetC64
5└── README.txt
  1. Make a build directory inside /PDFNetWrappers and navigate to it. This guide will assume the build directory is called Build.
  2. ExecuteIf all goes well, you should get a message which reads:

sh

1cmake -D BUILD_PDFNetPython=ON ..

sh

1Build files have been written to ~/PDFNetWrappers/Build
  1. Execute make followed by sudo make install. You are now ready to run the samples or integrate Apryse SDK into your own application.

Also check out the source for the PDFNetC wrappers here.

  1. Get your Apryse trial key.

License Key

Apryse collects some data regarding your usage of the SDK for product improvement.

If you wish to continue without data collection, contact us and we will email you a no-tracking trial key for you to get started.

Run the samples

Running a specific sample

  1. Navigate to the PYTHON folder in the sample, for example /Samples/AddImageTest/PYTHON and execute ./RunTest.sh.

Run all samples

  1. To run all tests, navigate to /Samples and executeThe tests will run one by one.

sh

1./runall_python.sh

Output files will be in /Samples/TestFiles/Output

Integrate into your application

This section will show you how to use our SDK to create a simple Apryse "Hello World!" application. It will create a document with one blank page and save it as a linearized PDF in its running directory.

  1. Navigate to the /Samples directory and create a new directory called myApp (if it does not exist already). This guide will assume your application is named myApp. For organization, create a new directory inside myApp called PYTHON.
  2. Navigate inside that PYTHON directory and create a new Python file called myApp.py. Open it with your favorite text editor and paste this into it:

Python

1import site
2# below is the relative path to Apryse PDFNetC libraries
3site.addsitedir("../../../PDFNetC/Lib")
4import sys
5from PDFNetPython import *
6
7def main():
8 PDFNet.Initialize("YOUR_APRYSE_LICENSE_KEY")
9 doc = PDFDoc()
10 page = doc.PageCreate() # Start a new page
11 doc.PagePushBack(page) # Add the page to the document
12 doc.Save("output.pdf", SDFDoc.e_linearized); # Save the document as a linearized PDF
13 print("Hello World!")
14
15if __name__ == '__main__':
16 main()
  1. Run your application via python myApp.py. If all goes well your output should read:

sh

1PDFNet is running in demo mode.
2Permission: write
3Hello World!

Check the output.pdf that the program output in the same directory. It should be a PDF with one blank page.

Next step

Also check out the source for the PDFNetC wrappers.

Troubleshooting

Check the troubleshooting page and our PDFNetWrappers github if you run into any issues going through this document.

Did you find this helpful?

Trial setup questions?

Ask experts on Discord

Need other help?

Contact Support

Pricing or product questions?

Contact Sales