Compress PDFs with the Go API
Use the PDF Squeezer PDF compression REST API from Go. Upload a PDF with multipart form data and receive an optimized file.
package main
import (
"bytes"
"errors"
"io"
"mime/multipart"
"net/http"
"os"
)
const apiURL = "https://api.pdfsqueezer.io/v1/compress"
func compressPDF(inputPath, outputPath, apiKey string) error {
file, err := os.Open(inputPath)
if err != nil {
return err
}
defer file.Close()
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "document.pdf")
io.Copy(part, file)
writer.WriteField("quality", "85")
writer.WriteField("maxDimension", "1600")
writer.WriteField("stripMetadata", "true")
writer.WriteField("convertToJpeg", "true")
writer.Close()
req, _ := http.NewRequest("POST", apiURL, body)
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", writer.FormDataContentType())
resp, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
b, _ := io.ReadAll(resp.Body)
return errors.New(string(b))
}
out, _ := os.Create(outputPath)
defer out.Close()
io.Copy(out, resp.Body)
return nil
}