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 di file PDF
- Ottimizza i documenti PDF per il Web utilizzando C++
- Comprimi e ridimensiona le immagini nei file PDF utilizzando C++
- Rimuovi i caratteri incorporati, i flussi inutilizzati e collega i flussi duplicati utilizzando C++
- Rimuovi o appiattisci le annotazioni usando C++
- Rimozione dei campi modulo dai file PDF utilizzando C++
- Converti lo spazio colore RGB in scala di grigi per i file PDF 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.
- Carica il documento PDF utilizzando la classe Document.
- Ottimizza il documento usando il metodo Document->Optimize().
- Salvare il documento PDF utilizzando il metodo Document->Save(System::String outputFileName).
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.
- Carica il file PDF utilizzando la classe Document.
- Crea un’istanza della classe OptimizationOptions.
- Impostare le opzioni di compressione, qualità dell’immagine e risoluzione dell’oggetto Opzioni di ottimizzazione.
- Utilizzare il Document->Ottimizzarisorse(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions strategia) metodo per ottimizzare le risorse.
- Salvare il file PDF utilizzando il metodo Document->Save(System::String outputFileName).
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");
Rimuovi i caratteri incorporati, i flussi inutilizzati e collega i flussi duplicati utilizzando C++
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.
- Carica il file PDF utilizzando la classe Document.
- Crea un’istanza della classe OptimizationOptions.
- Disincorpora tutti i caratteri o il sottoinsieme di caratteri.
- Collega stream duplicati.
- Rimuovere i flussi e gli oggetti inutilizzati.
- Utilizzare il Document->Ottimizzarisorse(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions strategia) metodo per ottimizzare le risorse.
- Salvare il file PDF utilizzando il metodo Document->Save(System::String outputFileName).
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.
- Crea un’istanza della classe PdfAnnotationEditor.
- Carica il file PDF di origine utilizzando PdfAnnotationEditor->BindPdf (System::SharedPtrAspose::Pdf::Document srcDoc).
- Appiattisci o elimina le annotazioni.
- Salvare il file PDF utilizzando il metodo PdfAnnotationEditor->Save(System::String destFile).
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.
- Carica il file PDF utilizzando la classe Document.
- Verificare l’esistenza di campi modulo.
- Scorri i campi del modulo e appiattisci ogni campo.
- Salvare il file PDF utilizzando il metodo Document->Save(System::String outputFileName).
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:
- Carica il file PDF utilizzando la classe Document.
- Crea un’istanza della classe RgbToDeviceGrayConversionStrategy.
- Scorri le pagine del file PDF.
- Usa RgbToDeviceGrayConversionStrategy->Convert (System::SharedPtr page) metodo per convertire ogni pagina in scala di grigi.
- Salvare il file PDF utilizzando il metodo Document->Save(System::String outputFileName).
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.