PDF es un formato estándar para compartir documentos a través de Internet. Su soporte global y diseño consistente lo convierten en una opción ideal para tales escenarios. Sin embargo, a veces, el tamaño de los archivos PDF tiende a crecer debido a contenidos como imágenes, dibujos, etc. En tales escenarios, puede optimizar o comprimir fácilmente los archivos PDF para reducir su tamaño sin comprometer su calidad. Con ese fin, este artículo te enseñará diferentes técnicas que puedes usar para comprimir y optimizar archivos PDF para reducir su tamaño usando C++.

API de C++ para comprimir y optimizar archivos PDF

Aspose.PDF for C++ es una biblioteca de C++ que le permite crear, leer y actualizar documentos PDF. Puede usar esta API para comprimir y optimizar archivos PDF grandes para reducir su tamaño y al mismo tiempo conservar su calidad. Puede instalar la API a través de NuGet o descargarla directamente desde la sección descargas.

PM> Install-Package Aspose.PDF.Cpp

Optimice documentos PDF para la Web usando C++

Si desea mostrar los documentos PDF en la web, optimizarlos mejorará su velocidad de carga y, por lo tanto, mejorará la experiencia del usuario. Para optimizar los documentos PDF, siga los pasos que se indican a continuación.

El siguiente código de ejemplo muestra cómo optimizar documentos PDF para la web usando C++.

// Abre el documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Optimizar el documento PDF
pdfDocument->Optimize();

// Guardar el documento PDF
pdfDocument->Save(u"OutputDirectory\\Optimized_output.pdf");

Comprimir y cambiar el tamaño de imágenes en archivos PDF usando C++

Si los archivos PDF contienen una gran cantidad de imágenes, eso puede resultar en tamaños de archivo considerables. En dichos archivos, las imágenes juegan un papel importante en el aumento de su tamaño. Comprimir y cambiar el tamaño de las imágenes en estos archivos daría como resultado una reducción notable de sus tamaños. Los siguientes son los pasos para comprimir y cambiar el tamaño de las imágenes en un archivo PDF.

El siguiente código de ejemplo muestra cómo comprimir y cambiar el tamaño de las imágenes para reducir el tamaño del archivo PDF mediante C++.

// Abre el documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Crear una instancia de la clase OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Comprimir y cambiar el tamaño de las imágenes y establecer su calidad y resolución
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Optimizar recursos en el documento
pdfDocument->OptimizeResources(options);

// Guardar el documento PDF
pdfDocument->Save(u"OutputDirectory\\Compressed_PDF_With_Images.pdf");

Para reducir aún más el tamaño del archivo, también puede eliminar las fuentes incrustadas del archivo. Existen dos estrategias para eliminar las fuentes incrustadas; la primera es que elimina todas las fuentes incrustadas y la segunda es que solo elimina el subconjunto de fuentes no utilizadas. Además, también puede eliminar transmisiones no utilizadas y vincular transmisiones duplicadas para reducir el tamaño adicional. Los siguientes son los pasos para aplicar los cambios discutidos anteriormente a un archivo PDF.

El siguiente código de ejemplo muestra cómo reducir el tamaño de un archivo PDF al desintegrar las fuentes y eliminar flujos y objetos no utilizados mediante C++.

// Abre el documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Crear una instancia de la clase OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// O
// Desincrustar todas las fuentes en PDF
options->set_UnembedFonts(true);

// O
// Mantenga solo las fuentes incrustadas para los caracteres usados
options->set_SubsetFonts(true);

// Vincular flujos duplicados
options->set_LinkDuplcateStreams(false);

// Eliminar secuencias no utilizadas
options->set_RemoveUnusedStreams(false);

// Eliminar objetos no utilizados
options->set_RemoveUnusedObjects(false);

// Optimizar recursos en el documento
pdfDocument->OptimizeResources(options);

// Guardar el documento PDF
pdfDocument->Save(u"OutputDirectory\\Remove_Embedded_Fonts_Output.pdf");

Quitar o aplanar anotaciones usando C++

Puede haber múltiples anotaciones en archivos PDF como texto, formas, etc., que aumentan el tamaño del archivo. Estas anotaciones se pueden eliminar si ya no son necesarias o aplanarse si no se necesitan más cambios. Hacer esto reducirá el tamaño del archivo PDF. Los siguientes son los pasos para eliminar o acoplar anotaciones de archivos PDF.

El siguiente código de ejemplo muestra cómo eliminar o aplanar anotaciones en archivos PDF usando C++.

// Crear una instancia de la clase PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Cargue el archivo PDF de muestra
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// O
// Aplanar anotaciones
annotationEditor->FlatteningAnnotations();

// O
// Eliminar anotaciones
//editor de anotaciones->Eliminar anotaciones();

// Guardar el documento PDF
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

Eliminar campos de formulario de archivos PDF usando C++

Los campos de los formularios son obligatorios cuando necesita recopilar datos. Si ya no se requiere la recopilación de datos, puede aplanar los campos del formulario para reducir el tamaño del archivo PDF. Los siguientes son los pasos para acoplar campos de formulario en archivos PDF.

El siguiente código de ejemplo muestra cómo acoplar campos de formulario en archivos PDF usando C++.

// Abre el documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Iterar a través de los campos del formulario
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Aplanar campo
		field->Flatten();
	}
}

// Guardar el documento PDF
pdfDocument->Save(u"OutputDirectory\\Flatten_Form_Fields.pdf");

Convierta el espacio de color RGB a escala de grises para archivos PDF usando C++

Los archivos PDF con información textual se pueden representar bien en un espacio de color en escala de grises, por lo que cuando es esencial reducir el tamaño del archivo, dichos archivos PDF se pueden convertir a escala de grises. Además, supongamos que la prioridad es archivar archivos y reducir el tamaño tanto como sea posible. En ese caso, los archivos PDF con imágenes también se pueden convertir a escala de grises, ya que el objetivo principal es hacer que los archivos sean lo más pequeños posible. Para cambiar el espacio de color de los archivos PDF de RGB a escala de grises, siga los pasos que se indican a continuación:

El siguiente código de ejemplo muestra cómo convertir el espacio de color de un archivo PDF de RGB a escala de grises mediante C++.

// Abre el documento PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 1.pdf");

System::SharedPtr<RgbToDeviceGrayConversionStrategy> strategy = MakeObject<RgbToDeviceGrayConversionStrategy>();

for (int idxPage = 1; idxPage <= pdfDocument->get_Pages()->get_Count(); idxPage++) {
	System::SharedPtr<Page> page = pdfDocument->get_Pages()->idx_get(idxPage);

	// Convierta el espacio de color de cada página a escala de grises
	strategy->Convert(page);
}

// Guardar el documento PDF
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

El objetivo de este artículo era buscar diferentes formas de comprimir y optimizar archivos PDF para reducir su tamaño. En primer lugar, analizamos cómo optimizar los archivos PDF para la web. Luego vimos cómo comprimir y cambiar el tamaño de imágenes en archivos PDF. Además, hemos aprendido a eliminar fuentes y secuencias incrustadas de archivos PDF. Además de esto, aprendimos cómo aplanar anotaciones y campos de formulario, y convertir el espacio de color de los archivos PDF a escala de grises. Exploramos todas estas formas de reducir el tamaño de los archivos PDF sin afectar su calidad. Aspose.PDF for C++ proporciona muchas funciones adicionales para trabajar con archivos PDF. Puede explorar la API en detalle visitando la documentación oficial. Si tiene alguna pregunta, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.

Ver también