AVAILABLE NOW: Spring 2025 Release
By Apryse | 2025 Apr 08
5 min
Tags
C#
java
Depending on your needs and data type, the term "optimize" can have several meanings. It can mean to optimize the size of the PDF file, or it can mean to organize the data within the PDF file for a specific purpose such as web viewing. Thankfully, Apryse does both, with the following code sample both compressing and linearizing PDF files.
The following C# and Java code snippets optimize the PDF compression. It bases the compression type on the data type.
using System;
using pdftron;
using pdftron.Common;
using pdftron.SDF;
using pdftron.PDF;
namespace OptimizerTest
{
class Class1
{
static Class1() { }
static void Main(string[] args)
{
PDFNet.Initialize(PDFTronLicense.Key);
string input_path = @"file path to input pdf file";
string output_path = @"file path to output pdf file";
try
{
using (PDFDoc doc = new PDFDoc(input_path))
{
doc.InitSecurityHandler();
Optimizer.ImageSettings image_settings = new Optimizer.ImageSettings();
// low quality jpeg compression
image_settings.SetCompressionMode(Optimizer.ImageSettings.CompressionMode.e_jpeg);
image_settings.SetQuality(1);
image_settings.SetDownsampleMode(Optimizer.ImageSettings.DownsampleMode.e_default);
// Set the output dpi to be standard screen resolution
image_settings.SetImageDPI(144, 96);
// this option will recompress images not compressed with
// jpeg compression and use the result if the new image
// is smaller.
image_settings.ForceRecompression(true);
// this option is not commonly used since it can
// potentially lead to larger files. It should be enabled
// only if the output compression specified should be applied
// to every image of a given type regardless of the output image size
//image_settings.ForceChanges(true);
// use the same settings for both color and grayscale images
Optimizer.OptimizerSettings opt_settings = new Optimizer.OptimizerSettings();
opt_settings.SetColorImageSettings(image_settings);
opt_settings.SetGrayscaleImageSettings(image_settings);
//monochrome image settings and default settings for color and grayscale images.
Optimizer.MonoImageSettings mono_image_settings = new Optimizer.MonoImageSettings();
mono_image_settings.SetCompressionMode(Optimizer.MonoImageSettings.CompressionMode.e_jbig2);
mono_image_settings.ForceRecompression(true);
mono_image_settings.SetDownsampleMode(Optimizer.MonoImageSettings.DownsampleMode.e_default);
opt_settings.SetMonoImageSettings(mono_image_settings);
Optimizer.Optimize(doc, opt_settings);
doc.Save(output_path, SDFDoc.SaveOptions.e_linearized);
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
}
PDFNet.Terminate();
}
}
}
import com.pdftron.pdf.*;
import com.pdftron.sdf.SDFDoc;
public class OptimizerTest {
public static void main(String[] args) {
String input_path = "file path to input pdf file";
String output_path = "file path to output pdf file";
PDFNet.initialize(PDFTronLicense.Key());
try (PDFDoc doc = new PDFDoc(input_path + input_filename)) {
doc.initSecurityHandler();
Optimizer.ImageSettings image_settings = new Optimizer.ImageSettings();
// low quality jpeg compression
image_settings.setCompressionMode(Optimizer.ImageSettings.e_jpeg);
image_settings.setQuality(1);
image_settings.SetDownsampleMode(Optimizer.ImageSettings.DownsampleMode.e_default);
// Set the output dpi to be standard screen resolution
image_settings.setImageDPI(144, 96);
// this option will recompress images not compressed with
// jpeg compression and use the result if the new image
// is smaller.
image_settings.forceRecompression(true);
// this option is not commonly used since it can
// potentially lead to larger files. It should be enabled
// only if the output compression specified should be applied
// to every image of a given type regardless of the output image size
//image_settings.forceChanges(true);
Optimizer.OptimizerSettings opt_settings = new Optimizer.OptimizerSettings();
opt_settings.setColorImageSettings(image_settings);
opt_settings.setGrayscaleImageSettings(image_settings);
Optimizer.MonoImageSettings mono_image_settings = new Optimizer.MonoImageSettings();
mono_image_settings.SetCompressionMode(Optimizer.MonoImageSettings.CompressionMode.e_jbig2);
mono_image_settings.ForceRecompression(true);
mono_image_settings.SetDownsampleMode(Optimizer.MonoImageSettings.DownsampleMode.e_default);
Optimizer.optimize(doc, opt_settings);
doc.save(output_path + input_filename3, SDFDoc.SaveMode.LINEARIZED, null);
} catch (Exception e) {
e.printStackTrace();
return;
}
PDFNet.terminate();
}
}
To find out more about compressing and optimizing PDF files using Apryse SDK, check out our documentation.
Tags
C#
java
Apryse
Share this post
PRODUCTS
Platform Integrations
End User Applications
Popular Content