Compress and Reduce PDF File Size

You can compress PDFs using Document Engine.

Compressing PDFs

To compress a PDF, use the following example:

curl -X POST http://localhost:5000/api/build \
  -H "Authorization: Token token=<API token>" \
  -F document=@/path/to/example-document.pdf \
  -F instructions='{
  "parts": [
    {
      "file": "document"
    }
  ],
  "output": {
    "type": "pdf",
    "optimize": {
      "grayscaleText": true,
      "grayscaleGraphics": true,
      "grayscaleFormFields": true,
      "grayscaleAnnotations": true,
      "disableImages": true,
      "mrcCompression": true,
      "imageOptimizationQuality": 2
    }
  }
}' \
  -o result.pdf
POST /api/build HTTP/1.1
Content-Type: multipart/form-data; boundary=customboundary
Authorization: Token token=<API token>

--customboundary
Content-Disposition: form-data; name="document"; filename="example-document.pdf"
Content-Type: application/pdf

<PDF data>
--customboundary
Content-Disposition: form-data; name="instructions"
Content-Type: application/json

{
  "parts": [
    {
      "file": "document"
    }
  ],
  "output": {
    "type": "pdf",
    "optimize": {
      "grayscaleText": true,
      "grayscaleGraphics": true,
      "grayscaleFormFields": true,
      "grayscaleAnnotations": true,
      "disableImages": true,
      "mrcCompression": true,
      "imageOptimizationQuality": 2
    }
  }
}
--customboundary--

Licensing

To compress PDFs with Document Engine, the Compression feature needs to be included in your license. Contact Sales to add compression to your license. After the new component is added to your license, update the license or activation keys in your configuration.

Linearization

You can perform both linearization and compression in a single request to /api/build if both features are enabled in your license:

instructions = {
  ...
  output: {
    type: "pdf",
    optimize: {
      grayscaleText: true,
      grayscaleGraphics: true,
      grayscaleFormFields: true,
      grayscaleAnnotations: true,
      disableImages: true,
      mrcCompression: true,
      imageOptimizationQuality: 2,
      linearize: true,
    }
  }
}

To learn more about linearization with PSPDFKit Processor, refer to the linearization guide.