Diferentes organizaciones utilizan archivos PDF para el intercambio seguro y organizado de información. Sin embargo, a veces los archivos PDF aumentan de tamaño debido a los contenidos incrustados como imágenes, videos, dibujos, etc. Puede optimizar o comprimir fácilmente el tamaño de un archivo PDF sin comprometer la calidad. Exploremos los siguientes escenarios de compresión y optimización del tamaño de PDF que puede incorporar en sus aplicaciones Java:

API de compresión y optimización de tamaño de PDF: instalación

Puede utilizar las rutinas eficientes y confiables de Aspose.PDF for Java API para optimizar o comprimir archivos PDF de gran tamaño manteniendo la misma calidad. Puede descargar los archivos JAR desde Descargas o con Configuraciones de Maven en su proyecto.

Optimice documentos PDF para la Web usando Java

El documento PDF se puede optimizar cuando necesite usarlo en sus páginas web. Esta optimización es útil para mostrar la primera página del documento PDF lo más rápido posible. Puede tener el archivo PDF optimizado siguiendo los pasos a continuación:

  1. Archivo PDF de código abierto
  2. Llame al método de optimización para la optimización de PDF
  3. Guarde el archivo PDF de salida

El fragmento de código siguiente es un ejemplo de cómo optimizar documentos PDF para la web en su entorno Java:

// Abrir documento
Document pdfDocument = new Document("Original.pdf");

// Optimizar para web
pdfDocument.optimize();

// Guardar documento de salida
pdfDocument.save("Optimized_output.pdf");

Comprimir u optimizar el tamaño del PDF que contiene imágenes usando Java

Aquí discutiremos principalmente los escenarios en los que los archivos PDF contienen muchas imágenes y, por lo tanto, tienen un tamaño enorme. Por ejemplo, un archivo PDF que contenga dibujos de diferentes modelos de aviones e información sobre cada parte, menor o mayor, incluidos como imágenes o fotografías de todos los componentes. Además, muchos documentos profesionales pueden contener imágenes como artefactos principales del archivo. En tales escenarios, podemos comprimir los archivos PDF con los siguientes enfoques:

Reducir, comprimir y cambiar el tamaño de todas las imágenes usando Java

Puede minimizar el tamaño del archivo PDF que contiene muchas imágenes reduciendo, comprimiendo y cambiando el tamaño de las imágenes. Las mejoras de tamaño podrían ser notables porque la mayor parte del tamaño del archivo está cubierto por las imágenes que ahora pretendemos reducir. Debe seguir los pasos a continuación para reducir, comprimir y cambiar el tamaño de las imágenes o imágenes en un archivo PDF:

  1. Cargar archivo PDF de entrada
  2. Inicializar objeto Opciones de optimización
  3. Establecer la calidad y la resolución de la imagen
  4. Llamar al método optimizeResources
  5. Guarde el documento PDF de salida

El fragmento de código a continuación muestra cómo reducir o comprimir imágenes para reducir y minimizar el tamaño del archivo PDF usando Java:

// Cargar documento de entrada
Document doc = new Document(dataDir + "Test.pdf");

// Inicializar objeto OptimizationOptions
OptimizationOptions opt = new OptimizationOptions();

// Habilitar la compresión de imágenes
// Establecer la calidad y resolución de las imágenes en un archivo PDF
opt.getImageCompressionOptions().setCompressImages(true);
opt.getImageCompressionOptions().setImageQuality(10);
opt.getImageCompressionOptions().setMaxResolution(150);
opt.getImageCompressionOptions().setResizeImages(true);
doc.optimizeResources(opt);

// Guardar el archivo actualizado
doc.save(dataDir + "compressingPDFWithImages_out.pdf");

Eliminación de fuentes incrustadas, secuencias no utilizadas y vinculación de secuencias duplicadas mediante Java

Cuando necesite reducir el tamaño del archivo PDF, cada byte importa. Las fuentes incrustadas pueden ayudar a reducir el tamaño del archivo con diferentes enfoques. Por ejemplo, puede desincrustar todas las fuentes o puede mantener solo el subconjunto de caracteres de fuentes que se utilizan en el archivo PDF. Sería una desincrustación parcial de fuentes que aún ayudaría a minimizar el tamaño del archivo. Además, puede eliminar transmisiones no utilizadas o vincular transmisiones duplicadas para ahorrar más espacio. Estas optimizaciones de PDF reducirán considerablemente el tamaño del archivo. Debe seguir los siguientes pasos para optimizar y reducir el tamaño del archivo PDF:

  1. Cargar documento PDF de entrada
  2. Inicializar Opciones de optimización objeto de clase
  3. Desincruste todas las fuentes o el subconjunto de fuentes
  4. Vincular flujos duplicados
  5. Eliminar secuencias no utilizadas

El siguiente código explica cómo comprimir archivos PDF para optimizar, reducir y minimizar el tamaño de los documentos PDF:

Document doc = new Document(dataDir + "Test.pdf");
OptimizationOptions opt = new OptimizationOptions();

// O
// Desincrustar todas las fuentes en PDF
opt.setUnembedFonts(true);

//O
// solo mantenga las fuentes incrustadas para los caracteres usados
opt.setSubsetFonts(true);

// vincular flujos duplicados
opt.setLinkDuplcateStreams(false);

// Eliminar secuencias no utilizadas
opt.setRemoveUnusedStreams(false);

// Eliminar objetos no utilizados
opt.setRemoveUnusedObjects(false);

doc.optimizeResources(opt);

// Guardar el archivo actualizado
doc.save(dataDir + "compressingPDF.pdf");

Hasta ahora hemos discutido los enfoques de optimización principalmente para los archivos PDF con imágenes. Ahora procedamos con algunas formas más de optimización de PDF.

Comprimir o reducir el tamaño del documento PDF usando Java

Los archivos PDF a menudo contienen anotaciones, campos de formulario editables y artefactos de color que, en conjunto, ocupan espacio. Exploremos los siguientes procedimientos para comprimir el tamaño de un archivo PDF.

Eliminación o aplanamiento de anotaciones para reducir el tamaño con Java

Los archivos PDF pueden contener muchas anotaciones. Por ejemplo, marca de agua, comentarios, formas, etc. Puede eliminar las anotaciones si ya no son necesarias o aumentar las anotaciones si no se necesitan más cambios. Siga los pasos a continuación para eliminar o acoplar anotaciones para optimizar el tamaño del archivo PDF:

  1. Documento PDF de código abierto
  2. Iterar a través de cada página
  3. Aplanar o eliminar anotaciones
  4. Guarde el documento PDF de salida

El fragmento de código a continuación es un ejemplo de cómo eliminar o aplanar anotaciones en documentos PDF usando Java:

// Abrir documento
Document pdfDocument = new Document(dataDir + "OptimizeDocument.pdf");

// Iterar a través de cada página y anotación
for (Page page : pdfDocument.getPages())
{
    for (Annotation annotation : page.getAnnotations())
    {
        // Aplane la anotación
        annotation.flatten();
        
        // O eliminar la anotación
        // page.getAnnotations().delete(anotación);        
    }
}
// Guardar documento PDF optimizado
pdfDocument.save(dataDir + "OptimizeDocument_out.pdf");

Eliminación de campos de formulario para minimizar el tamaño del archivo PDF con Java

Los formularios PDF rellenables son comunes cuando necesita el envío de datos a gran escala. Después del envío de datos, los campos de formulario rellenables se pueden eliminar para optimizar y minimizar el tamaño del archivo PDF. Debe seguir los pasos a continuación para eliminar campos de formulario:

  1. Cargar documento PDF de entrada
  2. Verifique los campos de formulario en el documento PDF
  3. Iterar a través de cada campo y aplanarlo
  4. Guarde el archivo PDF comprimido actualizado
// Cargar formulario PDF de origen
Document doc = new Document(dataDir + "input.pdf");

// Aplanar campos de formulario
if (doc.getForm().getFields().length > 0)
{
    for (Field item : doc.getForm().getFields())
    {
        item.flatten();
    }
}

dataDir = dataDir + "FlattenForms_out.pdf";
// Guardar el documento actualizado
doc.save(dataDir);

Convierta el espacio de color RGB a escala de grises para la compresión y optimización de PDF usando Java

La mayoría de los archivos PDF contienen contenido de texto que también se puede representar bien en el espacio de color en escala de grises. Además, cuando el propósito y la prioridad es guardar cada byte, incluso las imágenes se pueden convertir a escala de grises porque la atención se centra en archivar los datos. Puede seguir los pasos a continuación para comprimir y optimizar el tamaño del archivo PDF al convertir el espacio de color RGB a escala de grises:

  1. Acceder al documento PDF fuente
  2. Inicialice la instancia RgbToDeviceGrayConversionStrategy
  3. Convierta el espacio de color de cada color a escala de grises
  4. Guardar archivo PDF optimizado de salida

El siguiente fragmento de código muestra cómo comprimir y optimizar el tamaño de PDF cambiando el espacio de color en el entorno Java:

// Cargar documento PDF de entrada
Document document = new Document("input.pdf");

// Inicializar la instancia de RgbToDeviceGrayConversionStrategy
RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= document.getPages().size(); idxPage++) {
	Page page = document.getPages().get_Item(idxPage);
        
        // Convierta el espacio de color de cada página a escala de grises
	strategy.convert(page);
}
// Guardar documento PDF de salida
document.save("output.pdf");

Conclusión

En este artículo, hemos cubierto diferentes formas y enfoques para optimizar y comprimir archivos PDF para reducir el tamaño. En primer lugar, hemos optimizado el tamaño del archivo PDF para la web usando Java. Luego hemos aprendido a reducir, comprimir y cambiar el tamaño de las imágenes en un archivo PDF que contiene varias imágenes. Además, también hemos explorado trabajar con fuentes, secuencias, anotaciones, campos de formulario, así como convertir el espacio de color del documento PDF a escala de grises para que se pueda crear un archivo PDF con menor tamaño pero con la misma calidad usando Java. Además, en caso de cualquier consulta relacionada con este tema, puede contactarnos a través del Foro de soporte gratuito.

Ver también

Información: con una nueva aplicación web en línea de Aspose, puede transformar un conjunto de imágenes en un video. También puede consultar otro servicio, uno que extrae los sonidos de los videos.