Some test text!

Step by stepkeyboard_arrow_down

Get started with Go

Welcome to PDFTron. Go for the PDFTron SDK is supported on Windows and Linux. To get started, choose your preferred platform from the tabs below.

Go & Windows PDF library integration

This guide will help you build your own PDFNet Go wrappers by binding a free trial of the PDFNet library to Go. It will also show you how to run PDFTron samples and integrate the PDFTron SDK into Go applications on Windows. Your free trial includes unlimited trial usage and support from solution engineers.


  • SWIG3 ≥ 3.0.12
  • Go (verified with version 1.15)
  • MINGW-W64 (verified with version 4.3)
  • CMake version ≥ 2.8
  • PDFTron SDK for Windows:

No trial license key required.
The trial of PDFTron SDK works without a license key. A commercial license key is required for use in a production environment. Please fill out our licensing form if you do not have a valid license key.
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 by executing

    git clone # Git clone the code.
  3. Navigate to PDFNetWrappers/PDFNetC and download the PDFNet C/C++ SDK into that directory. Ensure you obtain the right architecture for your Go interpreter. For example, if your interpreter is 64bit (which this guide will assume), execute

    cd PDFNetWrappers/PDFNetC # Move to where we download PDFNetC.
  4. Unzip, then execute

    move PDFNetC64\Headers . # Move PDFNetC Headers/ into place.
    move PDFNetC64\Lib . # Move PDFNetC Lib/ into place.

    to move the PDFNetC libraries in place.

    You can delete to free up space.

    Your /PDFNetC folder should be laid out like this like this:

    ├── Headers
    ├── Lib
    ├── PDFNetC64
    └── README.txt
  5. Make a build directory inside /PDFNetWrappers and navigate to it. This guide will assume the build directory is called Build.

    cd .. # Go back up /PDFNetWrappers.
    md Build # Create a directory to create the Makefiles in.
    cd Build # Move to that directory.
  6. Execute make.

    cmake -G "MinGW Makefiles" -D BUILD_PDFTronGo=ON .. # Create the pdftron directory under Build/PDFTronGo/ directory.

    If all goes well, you should get a message which reads:

    Build files have been written to ~/PDFNetWrappers/Build
  7. Copy pdftron directory followed by go install.

    cd PDFTronGo # Move to that directory.
    go env # Find the go path in GOPATH environment variable.
    xcopy /E pdftron GOPATH\src\pdftron\ # Copy pdftron directory to GOPATH/src directory.
    cd GOPATH\src\pdftron # Move to pdftron directory.
    go install # Build and install pdftron package for Go

You are now ready to run the samples or integrate PDFTron SDK into your own application.

Run the samples

Run a specific sample

  1. To run a test, navigate to the GO folder in the sample, for example /Samples/AddImageTest/GO and execute ./RunTest.bat

Run all samples

  1. To run all tests, navigate to /Samples and execute:

    cd ../Samples # Move to the Samples directory.
    ./runall_go.bat # Run all Go code samples, using the new wrappers.

    The tests will run one by one.

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 PDFTron "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 into your /Samples directory and make 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 GO.
  2. Navigate inside that GO directory and create a new GO file called myApp.go. Open it with your favorite text editor and paste this into it:

    package main
    import (
        . "pdftron"
    func main(){
        PDFNetInitialize()           // PDFNet must be initialized before accessing any PDFTron API
        doc := NewPDFDoc()
        page := doc.PageCreate()     // Start a new page
        doc.PagePushBack(page)       // Add the page to document
        doc.Save("output.pdf", uint(SDFDocE_linearized)); // Save the document as a linearized PDF

    Run your application by executing go run myApp.go. Make sure that your interpreter can find the PDFNetC library. If all goes well, your console should output:

    PDFNet is running in demo mode.
    Permission: write
    Hello 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.

Get the answers you need: Support


Free Trial

Get unlimited trial usage of PDFTron SDK to bring accurate, reliable, and fast document processing capabilities to any application or workflow.

Select a platform to get started with your free trial.

Unlimited usage. No email address required.