HTML'si PDFium VCL ile Birden Fazla PDF Dosyasını Tek Belgede Birleştirme | losLab Software Development Blog

Teknik makale

PDFium VCL ile Birden Fazla PDF Dosyasını Tek Belgede Birleştirme

· PDF Programlama

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:

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
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;
[Format Süresi: 0,0012 saniye]

ImportPages'i Anlamak

 ImportPages yöntemi PDF birleştirmenin anahtarıdır:

Urvanov Sözdizimi Vurgulayıcı v2.9.1
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;
[Format Süresi: 0,0001 saniye]

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;
[Format Süresi: 0,0002 saniye]

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;
[Format Süresi: 0,0002 saniye]

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;
[Format Süresi: 0,0003 saniye]

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;
[Format Süresi: 0,0003 saniye]

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;
[Format Süresi: 0,0004 saniye]

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;
[Format Süresi: 0,0003 saniye]

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.