PDF è un formato standard per la condivisione di documenti su Internet. Il suo supporto globale e il layout coerente lo rendono la scelta ideale per tali scenari. Tuttavia, a volte, la dimensione dei file PDF tende ad aumentare a causa di contenuti come immagini, disegni, ecc. In tali scenari, puoi facilmente ottimizzare o comprimere i file PDF per ridurne le dimensioni senza comprometterne la qualità. A tal fine, questo articolo ti insegnerà diverse tecniche che puoi utilizzare per comprimere e ottimizzare i file PDF per ridurne le dimensioni utilizzando C++.

API C++ per la compressione e l’ottimizzazione dei file PDF

Aspose.PDF for C++ è una libreria C++ che consente di creare, leggere e aggiornare documenti PDF. Puoi utilizzare questa API per comprimere e ottimizzare file PDF di grandi dimensioni per ridurne le dimensioni pur mantenendone la qualità. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione download.

PM> Install-Package Aspose.PDF.Cpp

Ottimizza i documenti PDF per il Web utilizzando C++

Se desideri visualizzare i documenti PDF sul Web, ottimizzarli migliorerà la loro velocità di caricamento e quindi migliorerà l’esperienza dell’utente. Per ottimizzare i documenti PDF, seguire i passaggi indicati di seguito.

Il codice di esempio seguente mostra come ottimizzare i documenti PDF per il Web utilizzando C++.

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

// Ottimizza il documento PDF
pdfDocument->Optimize();

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

Comprimi e ridimensiona le immagini nei file PDF utilizzando C++

Se i file PDF contengono un numero elevato di immagini, ciò può comportare dimensioni di file notevoli. In tali file, le immagini svolgono un ruolo significativo nell’aumentare le loro dimensioni. La compressione e il ridimensionamento delle immagini in questi file comporterebbe una notevole riduzione delle loro dimensioni. Di seguito sono riportati i passaggi per comprimere e ridimensionare le immagini in un file PDF.

Il codice di esempio seguente mostra come comprimere e ridimensionare le immagini per ridurre le dimensioni del file PDF usando C++.

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

// Crea un'istanza della classe OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Comprimi e ridimensiona le immagini e imposta la loro qualità e risoluzione
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Ottimizza le risorse nel documento
pdfDocument->OptimizeResources(options);

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

Per ridurre ulteriormente le dimensioni del file, puoi anche rimuovere i caratteri incorporati dal file. Esistono due strategie per rimuovere i caratteri incorporati; il primo è rimuovere tutti i caratteri incorporati e il secondo è rimuovere solo il sottoinsieme di caratteri inutilizzati. Inoltre, puoi anche rimuovere i flussi inutilizzati e collegare i flussi duplicati per ridurre le dimensioni aggiuntive. Di seguito sono riportati i passaggi per applicare le modifiche discusse in precedenza a un file PDF.

Il codice di esempio seguente mostra come ridurre le dimensioni del file PDF annullando l’incorporamento dei caratteri e rimuovendo i flussi e gli oggetti inutilizzati utilizzando C++.

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

// Crea un'istanza della classe OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// O
// Rimuovi tutti i caratteri in PDF
options->set_UnembedFonts(true);

// O
// Mantieni i caratteri incorporati solo per i caratteri utilizzati
options->set_SubsetFonts(true);

// Collega stream duplicati
options->set_LinkDuplcateStreams(false);

// Rimuovi i flussi inutilizzati
options->set_RemoveUnusedStreams(false);

// Rimuovere gli oggetti inutilizzati
options->set_RemoveUnusedObjects(false);

// Ottimizza le risorse nel documento
pdfDocument->OptimizeResources(options);

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

Rimuovi o appiattisci le annotazioni usando C++

Possono esserci più annotazioni nei file PDF come testo, forme, ecc., che aumentano le dimensioni del file. Queste annotazioni possono essere rimosse se non sono più necessarie o appiattite se non sono necessarie ulteriori modifiche. In questo modo si ridurrà la dimensione del file PDF. Di seguito sono riportati i passaggi per rimuovere o appiattire le annotazioni dai file PDF.

Il codice di esempio seguente mostra come eliminare o convertire le annotazioni nei file PDF usando C++.

// Creare un'istanza della classe PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Carica il file PDF di esempio
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// O
// Annotazioni appiattite
annotationEditor->FlatteningAnnotations();

// O
// Elimina annotazioni
//annotationEditor->DeleteAnnotations();

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

Rimozione dei campi modulo dai file PDF utilizzando C++

I campi dei moduli sono obbligatori quando è necessario raccogliere dati. Se la raccolta dei dati non è più necessaria, puoi appiattire i campi del modulo per ridurre le dimensioni del file PDF. Di seguito sono riportati i passaggi per appiattire i campi modulo nei file PDF.

Il codice di esempio seguente mostra come convertire i campi modulo nei file PDF usando C++.

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

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Scorri i campi del modulo
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Campo appiattito
		field->Flatten();
	}
}

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

Converti lo spazio colore RGB in scala di grigi per i file PDF utilizzando C++

I file PDF con informazioni testuali possono essere rappresentati bene nello spazio colore in scala di grigi, quindi quando è essenziale ridurre le dimensioni del file, tali file PDF possono essere convertiti in scala di grigi. Supponiamo inoltre che la priorità sia archiviare i file e ridurne il più possibile le dimensioni. In tal caso, i file PDF con immagini possono anche essere convertiti in scala di grigi poiché l’obiettivo principale è rendere i file il più piccoli possibile. Per modificare lo spazio colore dei file PDF da RGB a scala di grigi, attenersi alla seguente procedura:

Il codice di esempio seguente mostra come convertire lo spazio colore di un file PDF da RGB a scala di grigi usando C++.

// Apri il 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);

	// Converti lo spazio colore di ogni pagina in Scala di grigi
	strategy->Convert(page);
}

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

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

L’obiettivo di questo articolo era esaminare diversi modi per comprimere e ottimizzare i file PDF per ridurne le dimensioni. In primo luogo, abbiamo esaminato come ottimizzare i file PDF per il Web. Poi abbiamo visto come comprimere e ridimensionare le immagini nei file PDF. Inoltre, abbiamo imparato come rimuovere i font e gli stream incorporati dai file PDF. Oltre a questo, abbiamo imparato come appiattire le annotazioni e i campi dei moduli e convertire lo spazio colore dei file PDF in scala di grigi. Abbiamo esplorato tutti questi modi per ridurre le dimensioni dei file PDF senza comprometterne la qualità. Aspose.PDF per C++ offre molte funzionalità aggiuntive per lavorare con i file PDF. Puoi esplorare l’API in dettaglio visitando la documentazione ufficiale. In caso di domande, non esitare a contattarci nel nostro forum di supporto gratuito.

Guarda anche