PDFium Component menyediakan ImportPages untuk menggabungkan halaman dari satu dokumen PDF ke dokumen lain. Anda dapat mengimpor semua halaman atau rentang tertentu, menentukan posisi penyisipan, dan menangani file yang dilindungi sandi. Artikel ini membahas pola-pola tersebut beserta perilaku yang perlu diketahui seputar kegagalan diam dan field formulir
Menggabungkan semua halaman dari daftar file
procedure TMergeForm.MergeFiles(const Files: TStrings; const OutputPath: string);
var
Base, Source: TPdf;
I: Integer;
begin
Base := TPdf.Create(nil);
Source := TPdf.Create(nil);
try
Base.CreateDocument; // start with an empty destination
for I := 0 to Files.Count - 1 do
begin
Source.LoadFromFile(Files[I]);
if not Source.Active then
begin
// silent failure: skip corrupt or unreadable files
Continue;
end;
// '' = all pages, -1 = append after last page
Base.ImportPages(Source, '', -1);
end;
Base.SaveToFile(OutputPath);
finally
Source.Free;
Base.Free;
end;
end;
Parameter string kosong '' pada ImportPages berarti "impor semua halaman". Parameter -1 berarti "sisipkan setelah halaman terakhir dokumen tujuan", sehingga setiap file sumber ditambahkan berurutan
Mengimpor rentang halaman tertentu
String rentang halaman menggunakan format yang sama dengan dialog print umum: angka tunggal, rentang dengan tanda hubung, atau kombinasi keduanya dipisahkan koma:
// Import only pages 1, 3, and 5-8 from Source into Base at position 2
Base.ImportPages(Source, '1,3,5-8', 2);
// Import the first page only
Base.ImportPages(Source, '1', -1);
// Import pages 2 through 4
Base.ImportPages(Source, '2-4', -1);
Posisi penyisipan berbasis-1; nilai 2 berarti halaman yang diimpor akan muncul setelah halaman 2 yang sudah ada. Gunakan -1 untuk selalu menambahkan di akhir
Membuka file yang dilindungi sandi sebelum mengimpor
procedure TMergeForm.MergeWithPassword(const SourceFile, Password: string;
Base: TPdf; InsertAt: Integer);
var
Source: TPdf;
begin
Source := TPdf.Create(nil);
try
Source.Password := Password;
Source.LoadFromFile(SourceFile);
if not Source.Active then
begin
ShowMessage('Could not open (wrong password or corrupt): ' + SourceFile);
Exit;
end;
Base.ImportPages(Source, '', InsertAt);
finally
Source.Free;
end;
end;
Menyimpan dokumen yang digabungkan
procedure TMergeForm.SaveAs(Base: TPdf; const OutputPath: string);
begin
if Base.PageCount = 0 then
begin
ShowMessage('No pages were imported successfully.');
Exit;
end;
Base.SaveToFile(OutputPath);
end;
Catatan perilaku field formulir
Saat mengimpor halaman dari PDF yang berisi field formulir AcroForm, field-field tersebut diratakan (dirender menjadi konten statis) selama impor. Nilai field saat ini menjadi bagian dari konten halaman yang dirender, namun field tersebut tidak lagi interaktif di dokumen tujuan. Ini adalah perilaku yang diharapkan: ImportPages dirancang untuk menggabungkan tampilan halaman, bukan struktur formulir
Untuk membuat PDF dari nol, bukan menggabungkan yang sudah ada, lihat artikel membuat PDF dari nol, atau kunjungi halaman produk PDFium Component