Artikel Teknis

Contoh Hello World Komponen HotPDF Delphi

Cara tercepat untuk memeriksa apakah HotPDF dikonfigurasi dengan benar adalah menghasilkan file PDF minimal yang dapat Anda buka di viewer. Contoh hello world di bawah ini melakukannya dalam satu prosedur, yang dapat disalin langsung ke project baru atau dipotong ke bagian yang relevan untuk penggunaan produksi

Program lengkapnya adalah aplikasi konsol yang membuat satu halaman, memilih font Unicode, menulis sapaan dengan TextOut, lalu menyimpan file terkompresi. Detail kecil ini menjadi pola yang sama untuk dokumen HotPDF yang lebih besar: font harus dipilih sebelum teks dan koordinat mengikuti origin kiri-bawah PDF

Penyiapan

Sebelum mengompilasi, pastikan direktori sumber HotPDF ada di library path kompiler. Komponen itu sendiri tidak perlu dijatuhkan ke form; Anda dapat mengalokasikannya secara dinamis seperti objek Pascal lainnya. Untuk project yang ingin menggunakannya di waktu desain, instal package BPL terlebih dahulu dari subdirektori distribusi yang sesuai dengan versi IDE Anda

Prosedur CreateHelloWorld

procedure TForm1.CreateHelloWorld;
var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.FileName := 'hello_world.pdf';
    PDF.Compression := cmFlateDecode;
    PDF.FontEmbedding := True;

    PDF.BeginDoc;

    PDF.CurrentPage.SetFont('Arial', [], 24);
    PDF.CurrentPage.TextOut(72, 700, 0, 'Hello, World!');

    PDF.EndDoc;
  finally
    PDF.Free;
  end;
end;

Cara kerja kode

THotPDF.Create(nil) mengalokasikan komponen tanpa owner VCL. Meneruskan nil membuat lifetime eksplisit: objek hidup sampai blok finally yang memanggil PDF.Free. Meneruskan Self (form) juga berhasil dan mendelegasikan pembersihan ke form, tetapi untuk kode yang menghasilkan satu dokumen dan selesai, scope eksplisit lebih bersih

PDF.FileName menetapkan path output. Ini bisa berupa path relatif dari direktori kerja aplikasi atau path absolut. BeginDoc membuka aliran penulis dan mengkomit opsi tingkat dokumen seperti Compression dan FontEmbedding; menetapkan properti tersebut setelah BeginDoc tidak berpengaruh

SetFont di CurrentPage memilih nama font, style ([] berarti regular), dan ukuran dalam poin. TextOut menerima empat argumen: X, Y, sudut rotasi, dan teks. Sistem koordinat HotPDF mengukur dari sudut kiri-bawah halaman, dengan Y bertambah ke atas. Ukuran halaman Letter default adalah 612 × 792 poin, sehingga pasangan 72, 700 menempatkan teks kira-kira satu inci dari kiri dan satu inci dari atas pada halaman Letter

EndDoc memfinalkan struktur internal PDF, menulis tabel cross-reference, dan menutup file. Jika Anda perlu membuat file yang dapat langsung dibuka di viewer setelah panggilan ini, Anda dapat menyetel PDF.AutoLaunch := True sebelum EndDoc, tetapi flag itu tidak cocok untuk kode produksi yang berjalan di server atau sebagai bagian dari alur batch

Menjalankan contoh

Kompilasi dan jalankan project, lalu cari hello_world.pdf di direktori kerja yang sama dengan executable Anda. Jika file tidak muncul, periksa bahwa PDF.FileName menunjuk ke direktori yang dapat ditulis dan bahwa tidak ada exception yang dilempar sebelum EndDoc. Menempatkan breakpoint pada EndDoc dan menjalankan dengan debugger terlampir adalah cara tercepat untuk mengonfirmasi dokumen ditutup dengan bersih

Setelah verifikasi ini berhasil, Anda dapat memperluas prosedur dengan menambahkan halaman (PDF.AddPage), menyematkan gambar (PDF.CurrentPage.DrawImage), atau menggambar path vektor. Setiap halaman baru menjadi halaman saat ini setelah AddPage, dan properti font serta warna harus ditetapkan ulang karena tidak ada state grafis yang terbawa antar halaman kecuali Anda melakukannya secara eksplisit