Birden fazla PDF belgesini tek bir dosyada birleştirmek, belge yönetimi iş akışlarında yaygın bir gereksinimdir. PDF'yi birleştir demo, Delphi'de PDFium VCL kullanılarak herhangi bir sayıda PDF dosyasının tek bir dosyada nasıl birleştirileceğini gösterir.
Genel Bakış
Bu demo, birden fazla PDF dosyasının seçilmesi, yeniden düzenlenmesi ve tek bir çıktı PDF'sinde birleştirilmesi için basit bir arayüz sağlar. Metin, resimler ve biçimlendirme dahil olmak üzere kaynak belgelerdeki tüm içeriği korur.
Temel Özellikler
- Çoklu Dosya Seçimi – Aynı anda birden fazla PDF ekleyin
- Dosyaları Yeniden Sırala – Dosyaları birleştirme sırasına göre yukarı veya aşağı taşı
- Dosyaları Kaldır – İstenmeyen dosyaları listeden kaldırın
- İlerleme Takibi – Birleştirme işlemi sırasında görsel ilerleme
- İçeriği Koru – Tüm sayfalar orijinal kalitede birleştirildi
PDFium DLL Gereksinimleri
Herhangi bir PDFium VCL uygulamasını çalıştırmadan önce PDFium DLL dosyalarının kurulu olduğundan emin olun:
pdfium32.dll/pdfium64.dll– Standart sürümler (~5-6 MB)pdfium32v8.dll/pdfium64v8.dll– V8 JavaScript motoruyla (~23-27 MB)
Kurulum: Çalıştır
DLL'leri otomatik olarak Windows sistem dizinlerine kopyalamak için Yönetici olarak PDFiumVCL\DLLs\CopyDlls.bat .
Birleştirme Süreci
Çekirdek birleştirme işlevi şunu kullanır: ImportPages yöntemi:
|
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; |
ImportPages'i Anlamak
ImportPages yöntemi PDF birleştirmenin anahtarıdır:
|
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; |
Desteklenen sayfa aralığı biçimleri:
"1-5"– Sayfa 1'den 5'e"1,3,5"– Sayfa 1, 3 ve 5"1-"– Sayfa 1'den sona"-5"– İlk sayfadan 5. sayfaya
Listeye Dosya Ekleme
Urvanov Sözdizimi Vurgulayıcı v2.9.1|
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; |
Dosyaları Yeniden Sıralama
Urvanov Sözdizimi Vurgulayıcı v2.9.1|
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; |
Dosyaları Kaldırma
Urvanov Sözdizimi Vurgulayıcı v2.9.1|
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; |
Kullanıcı Arayüzü Durumu Güncelleniyor
Urvanov Sözdizimi Vurgulayıcı v2.9.1|
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; |
Gelişmiş: Belirli Sayfaları Birleştirme
Kaynak belgelerden yalnızca belirli sayfaları birleştirebilirsiniz:
Urvanov Sözdizimi Vurgulayıcı v2.9.1|
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; |
Görüntüleyici Tercihlerini İçe Aktarma
Görüntüleyici tercihlerini başka bir belgeden kopyala:
Urvanov Sözdizimi Vurgulayıcı v2.9.1|
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; |
Kullanım Durumları
- Rapor Derleme – Birden fazla rapor bölümünü tek bir belgede birleştirin
- Fatura Toplu İşleme – Günlük faturaları aylık gruplar halinde birleştirin
- Belge Derlemesi – Şablonlardan ve içerikten eksiksiz belgeler oluşturun
- Arşiv Oluşturma – İlgili belgeleri arşivlemek için birleştirin
Sonuç
Merge PDF demosu, PDF belgelerini PDFium VCL ile birleştirmenin ne kadar kolay olduğunu gösterir. ImportPages yöntemi, belge yapısını ve içeriğini korumanın tüm karmaşıklığını ele alır.
İster basit bir belge birleştirici ister karmaşık bir belge birleştirme sistemi oluşturuyor olun, PDFium VCL ihtiyacınız olan araçları sağlar.
Başlarken loslab.com'dan PDFium VCL Bileşeni ve PDF iş akışlarınızı kolaylaştırın.