Combinare più documenti PDF in un singolo file è un requisito comune nei flussi di lavoro di gestione documentale. Demo di "Merge PDF". La demo mostra come unire un numero qualsiasi di file PDF in uno utilizzando PDFium VCL in Delphi.
Panoramica
Questa demo fornisce un'interfaccia semplice per selezionare più file PDF, riordinarli e unirli in un singolo file PDF di output. Preserva tutti i contenuti dei documenti di origine, inclusi testo, immagini e formattazione.
Caratteristiche Principali
- Selezione di più file. – Aggiungi più file PDF contemporaneamente.
- Riorganizza i file. – Sposta i file verso l'alto o verso il basso nell'ordine di unione.
- Rimuovi file. – Rimuovi i file indesiderati dall'elenco.
- Monitoraggio dei progressi. – Visualizzazione dei progressi durante l'operazione di unione.
- Mantieni il contenuto. – Tutte le pagine unite con qualità originale.
Requisiti delle librerie DLL di PDFium
Prima di eseguire qualsiasi applicazione VCL di PDFium, assicurarsi che i file DLL di PDFium siano installati:
pdfium32.dll/pdfium64.dll– Versioni standard (~5-6 MB)pdfium32v8.dll/pdfium64v8.dll– Con il motore JavaScript V8 (~23-27 MB)
Installazione: Esegui PDFiumVCL\DLLs\CopyDlls.bat come amministratore per copiare automaticamente i file DLL nelle directory di sistema di Windows.
Il processo di unione.
La funzionalità principale di unione utilizza il metodo: ImportPages method:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
procedure TFormMain.ButtonMergeClick(Sender: TObject); var Page, I: Integer; begin ProgressBar.Position := 0; ProgressBar.Enabled := True; Screen.Cursor := crHourGlass; try // Create new empty document for merged result PdfNew.CreateDocument; Page := 1; ProgressBar.Max := ListBox.Items.Count; // Process each source PDF for I := 0 to ListBox.Items.Count - 1 do begin // Load source PDF Pdf.FileName := ListBox.Items[I]; Pdf.Active := True; // Import all pages from source PdfNew.ImportPages(Pdf, IntToStr(1) + '-' + IntToStr(Pdf.PageCount), Page); // Track page position for next document Inc(Page, Pdf.PageCount); // Close source document Pdf.Active := False; ProgressBar.Position := I + 1; end; // Save merged document PdfNew.SaveAs(ExtractFilePath(Application.ExeName) + 'Merged.pdf'); PdfNew.Active := False; MessageDlg('Merge completed', mtInformation, [mbOK], 0); finally Screen.Cursor := crDefault; ProgressBar.Position := 0; ProgressBar.Enabled := False; Pdf.Active := False; PdfNew.Active := False; end; end; |
Comprensione di ImportPages.
Il ImportPages Il metodo è fondamentale per la fusione di file PDF:
|
1 2 3 4 5 |
function TPdf.ImportPages( Pdf: TPdf; // Source PDF document const Range: string; // Page range (e.g., "1-5", "1,3,5", "1-") PageNumber: Integer // Insert position in destination ): Boolean; |
Formati di intervallo di pagine supportati:
"1-5"– Pagine da 1 a 5."1,3,5"– Pagine 1, 3 e 5."1-"– Dalla pagina 1 alla fine."-5"– Dalla prima pagina alla pagina 5.
Aggiunta di file all'elenco.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure TFormMain.ButtonAddFilesClick(Sender: TObject); var I: Integer; begin if OpenDialog.Execute then begin for I := 0 to OpenDialog.Files.Count - 1 do ListBox.AddItem(OpenDialog.Files[I], nil); SelectItem(ListBox.Items.Count - 1); UpdateButtons; end; end; |
Riorganizzazione dei file.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
procedure TFormMain.ButtonMoveUpClick(Sender: TObject); var ItemIndex: Integer; begin ItemIndex := ListBox.ItemIndex; ListBox.Items.Move(ItemIndex, ItemIndex - 1); SelectItem(ItemIndex - 1); UpdateButtons; end; procedure TFormMain.ButtonMoveDownClick(Sender: TObject); var ItemIndex: Integer; begin ItemIndex := ListBox.ItemIndex; ListBox.Items.Move(ItemIndex, ItemIndex + 1); SelectItem(ItemIndex + 1); UpdateButtons; end; |
Rimozione dei file.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
procedure TFormMain.ButtonDeleteClick(Sender: TObject); var ItemIndex, ItemCount: Integer; begin ItemIndex := ListBox.ItemIndex; if MessageDlg('Delete ' + ListBox.Items[ItemIndex] + '?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin ListBox.Items.Delete(ItemIndex); ItemCount := ListBox.Items.Count; // Select appropriate item after deletion if ItemIndex < ItemCount then SelectItem(ItemIndex) else if ItemCount > 0 then SelectItem(ItemIndex - 1); UpdateButtons; end; end; |
Aggiornamento dello stato dell'interfaccia utente.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure TFormMain.UpdateButtons; var ItemIndex, ItemCount: Integer; begin ItemIndex := ListBox.ItemIndex; ItemCount := ListBox.Items.Count; ButtonAddFiles.Enabled := True; ButtonDelete.Enabled := ItemIndex <> -1; ButtonMoveUp.Enabled := (ItemIndex <> -1) and (ItemIndex > 0); ButtonMoveDown.Enabled := (ItemIndex <> -1) and (ItemIndex < ItemCount - 1); ButtonMerge.Enabled := ItemCount > 1; // Need at least 2 files to merge end; |
Avanzato: Unione di pagine specifiche.
È possibile unire solo pagine specifiche dai documenti di origine:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
procedure MergeSpecificPages; var PdfSource, PdfDest: TPdf; begin PdfSource := TPdf.Create(nil); PdfDest := TPdf.Create(nil); try PdfDest.CreateDocument; // Import pages 1-3 from first document PdfSource.FileName := 'document1.pdf'; PdfSource.Active := True; PdfDest.ImportPages(PdfSource, '1-3', 1); PdfSource.Active := False; // Import only page 5 from second document PdfSource.FileName := 'document2.pdf'; PdfSource.Active := True; PdfDest.ImportPages(PdfSource, '5', 4); PdfSource.Active := False; // Import last 2 pages from third document PdfSource.FileName := 'document3.pdf'; PdfSource.Active := True; PdfDest.ImportPages(PdfSource, IntToStr(PdfSource.PageCount - 1) + '-' + IntToStr(PdfSource.PageCount), 5); PdfSource.Active := False; PdfDest.SaveAs('merged_custom.pdf'); finally PdfDest.Active := False; PdfSource.Free; PdfDest.Free; end; end; |
Importazione delle preferenze del visualizzatore.
Copia delle preferenze del visualizzatore da un altro documento:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
procedure CopyViewerPreferences; var PdfSource, PdfDest: TPdf; begin PdfSource := TPdf.Create(nil); PdfDest := TPdf.Create(nil); try PdfSource.FileName := 'template.pdf'; PdfSource.Active := True; PdfDest.FileName := 'output.pdf'; PdfDest.Active := True; // Copy viewer preferences (zoom, page layout, etc.) PdfDest.ImportPreferences(PdfSource); PdfDest.SaveAs('output.pdf'); finally PdfSource.Active := False; PdfDest.Active := False; PdfSource.Free; PdfDest.Free; end; end; |
Casi d'uso.
- Compilazione del report. Combina più sezioni di report in un unico documento.
- Elaborazione batch di fatture. Unisci le fatture giornaliere in batch mensili.
- Assemblaggio di documenti. Crea documenti completi a partire da modelli e contenuti.
- Creazione di archivi. Combina documenti correlati per l'archiviazione.
Conclusione.
La demo di Merge PDF mostra quanto sia semplice combinare documenti PDF con PDFium VCL. ImportPages Questo metodo gestisce tutta la complessità della preservazione della struttura e del contenuto del documento.
Che tu stia creando un semplice combinatore di documenti o un complesso sistema di assemblaggio di documenti, PDFium VCL fornisce gli strumenti necessari.
Inizia con Componente PDFium VCL da loslab.com e semplifica i tuoi flussi di lavoro PDF.