PDF Generation Template Editor
Open-source visual PDF generation engine with customizable templates and developer-friendly APIs.
Open-source visual PDF generation engine with customizable templates and developer-friendly APIs.
Use the WriteOptimizeToFilePath() method to execute compression and save the document:
CPDFDocument document = new CPDFDocument();
document.open("test.pdf");
CPDFOptimizeOption optimizeOption = document.GetOptimizeOption();
// Configure optimization options
int flags =
CPDFOptimizeOption.OPTIMIZE_FLAG_RMNOTUSE |
CPDFOptimizeOption.OPTIMIZE_FLAG_BCOMPRESSIMAGE |
CPDFOptimizeOption.OPTIMIZE_FLAG_USEFLATE;
optimizeOption.setOptimizeFlags(flags);
// Configure image compression
optimizeOption.setImageQuality(60.0f);
// Execute compression and save
// Parameter fontSubset: true means enable font subsetting
bool success = document.optimizeSaveAsCopy("output_optimized.pdf", true);
if (success)
{
System.out.println("Document compression successful");
}Below is a complete document compression example that demonstrates how to combine various optimization options:
public void CompressDocument(string inputPath, string outputPath)
{
// Open document
CPDFDocument document = new CPDFDocument();
document.open("test.pdf");
if (document == null)
{
return;
}
// Get original file size
File originalFile = new File(inputPath);
long originalSize = originalFile.length();
// Get optimization options
CPDFOptimizeOptions optimizeOption = document.getOptimizeOptions();
if (optimizeOption == null)
{
return;
}
// Configure optimization flags - comprehensive optimization
int flags =
CPDFOptimizeOptions.OPTIMIZE_FLAG_RMNOTUSE | // Remove unused resources
CPDFOptimizeOptions.OPTIMIZE_FLAG_RMEPTOBJ | // Remove empty objects
CPDFOptimizeOptions.OPTIMIZE_FLAG_BCOMPRESSIMAGE | // Enable image compression
CPDFOptimizeOptions.OPTIMIZE_FLAG_RMDOCINFO | // Remove document information
CPDFOptimizeOptions.OPTIMIZE_FLAG_RMMEDTADATA | // Remove metadata
CPDFOptimizeOptions.OPTIMIZE_FLAG_USEFLATE | // Use Flate compression
CPDFOptimizeOptions.OPTIMIZE_FLAG_OPTIMIZEPAGECONTENT; // Optimize page content
optimizeOption.setOptimizeFlags(flags);
// Configure image compression options
CPDFImageOptimizeOptions imageOption = new CPDFImageOptimizeOptions();
imageOption.upperPpi = 225;
imageOption.targetPpi = 150;
imageOption.compressAlgorithm = CPDFCompressAlgorithm.JPEG2000;
imageOption.quality = 50;
optimizeOption.setColorImageOptions(imageOption);
// Apply the configuration back to the document
boolean setOk = document.setOptimizeOptions(optimizeOption);
if (!setOk) {
document.close();
return;
}
// Perform compression
bool success = document.optimizeSaveAsCopy(outputPath, true);
if (success) {
// Calculate compression ratio
File compressedFile = new File(outputPath);
long compressedSize = compressedFile.length();
double compressionRatio = (1.0 - (double) compressedSize / originalSize) * 100.0;
System.out.println("Compression completed!");
System.out.printf("Original size: %.2f KB%n", originalSize / 1024.0);
System.out.printf("Compressed size: %.2f KB%n", compressedSize / 1024.0);
System.out.printf("Compression ratio: %.1f%%%n", compressionRatio);
} else {
System.out.println("Compression failed");
}
// Release resources
document.close();
}