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
- Optimice documentos PDF para la Web usando C++
- Comprimir y cambiar el tamaño de imágenes en archivos PDF usando C++
- Eliminar fuentes incrustadas, secuencias no utilizadas y vincular secuencias duplicadas usando C++
- Quitar o aplanar anotaciones usando C++
- Eliminar campos de formulario de archivos PDF usando C++
- Convierta el espacio de color RGB a escala de grises para archivos PDF 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.
- Cargue el documento PDF usando la clase Document.
- Optimice el documento utilizando el método Document->Optimizar().
- Guarde el documento PDF utilizando el método Document->Save(System::String outputFileName).
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.
- Cargue el archivo PDF utilizando la clase Document.
- Cree una instancia de la clase Opciones de optimización.
- Configure las opciones de compresión, calidad de imagen y resolución del objeto Opciones de optimización.
- Use el Document->OptimizeResources (System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions estrategia) método para optimizar los recursos.
- Guarde el archivo PDF usando el método Document->Save(System::String outputFileName).
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");
Eliminar fuentes incrustadas, secuencias no utilizadas y vincular secuencias duplicadas usando C++
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.
- Cargue el archivo PDF utilizando la clase Document.
- Cree una instancia de la clase Opciones de optimización.
- Desincruste todas las fuentes o el subconjunto de fuentes.
- Vincular secuencias duplicadas.
- Retire las secuencias y los objetos no utilizados.
- Use el Document->OptimizeResources (System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions estrategia) método para optimizar los recursos.
- Guarde el archivo PDF utilizando el método Document->Save(System::String outputFileName).
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.
- Cree una instancia de la clase PdfAnnotationEditor.
- Cargue el archivo PDF de origen usando PdfAnnotationEditor->BindPdf (System::SharedPtrAspose::Pdf::Document srcDoc) método.
- Acoplar o eliminar las anotaciones.
- Guarde el archivo PDF usando el método PdfAnnotationEditor->Save(System::String destFile).
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.
- Cargue el archivo PDF utilizando la clase Document.
- Comprobar la existencia de campos de formulario.
- Iterar a través de los campos del formulario y aplanar cada campo.
- Guarde el archivo PDF utilizando el método Document->Save(System::String outputFileName).
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:
- Cargue el archivo PDF utilizando la clase Document.
- Cree una instancia de la clase RgbToDeviceGrayConversionStrategy.
- Iterar a través de las páginas del archivo PDF.
- Use RgbToDeviceGrayConversionStrategy->Convert (System::SharedPtr page) método para convertir cada página a escala de grises.
- Guarde el archivo PDF usando el método Document->Save(System::String outputFileName).
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.