Documentation

Image to PDF Go Examples

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


Basic examples

PNG file to PDF file

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Run the conversion and save the result to a file.
    err := client.ConvertFileToFile("/path/to/logo.png", "logo.pdf")

    // Check for the conversion error.
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

PNG file to in-memory PDF

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Run the conversion and store the result in the `pdf` variable.
    pdf, err := client.ConvertFile("/path/to/logo.png")

    // Check for the conversion error.
    handleError(err)

    // at this point the "pdf" variable contains PDF raw data and
    // can be sent in an HTTP response, saved to a file, etc.
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

PNG file to PDF stream

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Create an output stream for the conversion result
    outputStream, err := os.Create("logo.pdf")

    // Check for a file creation error.
    handleError(err)

    // Close the output stream.
    defer outputStream.Close()

    // run the conversion and write the result to the output stream.
    err = client.ConvertFileToStream("/path/to/logo.png", outputStream)

    // Check for the conversion error.
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

PNG url to PDF file

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Run the conversion and save the result to a file.
    err := client.ConvertUrlToFile("https://pdfcrowd.com/static/images/logo.png", "logo.pdf")

    // Check for the conversion error.
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

PNG url to in-memory PDF

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Run the conversion and store the result in the `pdf` variable.
    pdf, err := client.ConvertUrl("https://pdfcrowd.com/static/images/logo.png")

    // Check for the conversion error.
    handleError(err)

    // at this point the "pdf" variable contains PDF raw data and
    // can be sent in an HTTP response, saved to a file, etc.
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

PNG url to PDF stream

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Create an output stream for the conversion result
    outputStream, err := os.Create("logo.pdf")

    // Check for a file creation error.
    handleError(err)

    // Close the output stream.
    defer outputStream.Close()

    // run the conversion and write the result to the output stream.
    err = client.ConvertUrlToStream("https://pdfcrowd.com/static/images/logo.png", outputStream)

    // Check for the conversion error.
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

In-memory PNG to PDF file

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
    "io/ioutil"
)

func readFile(fileName string) []byte {
    content, err := ioutil.ReadFile(fileName)
    handleError(err)
    return content
}

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Run the conversion and save the result to a file.
    err := client.ConvertRawDataToFile(readFile("/path/to/logo.png"), "logo.pdf")

    // Check for the conversion error.
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

In-memory PNG to in-memory PDF

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
    "io/ioutil"
)

func readFile(fileName string) []byte {
    content, err := ioutil.ReadFile(fileName)
    handleError(err)
    return content
}

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Run the conversion and store the result in the `pdf` variable.
    pdf, err := client.ConvertRawData(readFile("/path/to/logo.png"))

    // Check for the conversion error.
    handleError(err)

    // at this point the "pdf" variable contains PDF raw data and
    // can be sent in an HTTP response, saved to a file, etc.
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

In-memory PNG to PDF stream

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
    "io/ioutil"
)

func readFile(fileName string) []byte {
    content, err := ioutil.ReadFile(fileName)
    handleError(err)
    return content
}

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Create an output stream for the conversion result
    outputStream, err := os.Create("logo.pdf")

    // Check for a file creation error.
    handleError(err)

    // Close the output stream.
    defer outputStream.Close()

    // run the conversion and write the result to the output stream.
    err = client.ConvertRawDataToStream(readFile("/path/to/logo.png"), outputStream)

    // Check for the conversion error.
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}

Get info about the current conversion

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // Create an API client instance.
    client := pdfcrowd.NewImageToPdfClient("demo", "demo")

    // Configure the conversion.
    client.SetDebugLog(true)

    // Run the conversion and save the result to a file.
    err := client.ConvertFileToFile("/path/to/logo.png", "logo.pdf")

    // Check for the conversion error.
    handleError(err)
    
    // print URL pointing to the debug log for this request.
    fmt.Println("Debug log url:", client.GetDebugLogUrl())
    
    // print number of conversion credits remaining in your account.
    fmt.Println("Remaining credit count:", client.GetRemainingCreditCount())
    
    // print number of credits consumed for this conversion.
    fmt.Println("Consumed credit count:", client.GetConsumedCreditCount())
    
    // print unique identifier assigned to this conversion job.
    fmt.Println("Job id:", client.GetJobId())
    
    // print size of the output data in bytes.
    fmt.Println("Output size:", client.GetOutputSize())
}

func handleError(err error) {
    if err != nil {
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("PDFCrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        panic(err.Error())
    }
}