FAQ Delphi cara membaca file pdf. Esai tentang membuat file PDF. Lihat PDF di aplikasi

21.05.2020 Kartu memori

tanggal publikasi 23/09/2005 07:00 Esai tentang membuat file PDF

Baru-baru ini, banyak konverter PDF, pembaca dan penulis telah ditemukan di Internet. Dan sebagian besar dari mereka ditawarkan untuk mendapatkan uang kode sumber untuk lebih banyak uang, harganya mulai dari $200 dan di satu tempat (setelah tertarik dengan ini saya menjelajahi Internet) seharga 900 euro.

Masalah ini menarik minat saya dalam hal pemrograman dan saya akan menyampaikan hasilnya kepada Anda. (Hasil ini saya peroleh saat mempelajari bagian dalam file PDF saat Anda membukanya komandan total melalui F3)

File PDF pada umumnya terdiri dari empat bagian :=

Apa itu

? Ini adalah referensi umum untuk versi spesifikasi PDF. Yang ada di baris pertama file PDF. Misalnya, "%PDF-1.3" Pada versi ketujuh Acrobat, yang dirilis sekitar awal musim panas tahun ini, nomor ini adalah "%PDF-1.7", tetapi ini bukan versi produk, ini adalah spesifikasi versi. Baris kedua PDF adalah singkatan kecil (tampaknya dimaksudkan untuk penggunaan di masa mendatang) "%vgPU"

Semua orang telah mengetahui bagian pertama PDF.

Apa nama bagian kedua ?

Jawabannya sangat sederhana: ini adalah rangkaian objek, yang deskripsinya, serta headernya, disajikan dalam bentuk teks.

Setiap objek adalah fragmen teks dengan nomor seri di namanya, misalnya "4 0 objek"

  • 4 ini adalah nomor seri objek
  • 0 ini adalah jumlah pembuatan (ulang) file, yaitu pada saat file diperbarui (diedit). nomor ini meningkat
  • keberatan Ini kata sandi artinya kita menemukan suatu objek di badan dokumen

Semua objek dibagi menjadi tidak langsung dan langsung. Semuanya tidak langsung, dan sebagian besarnya ada setelah kata tersebut keberatan memiliki pembatas di tubuhnya"<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">>" dan kata kode endobj

Benda langsung tidak boleh mempunyai pembatas buka tutup pada badannya”<<", ">>>"Semua objek tidak langsung dapat diakses melalui tabel referensi silang. Merupakan referensi berupa offset dari awal file hingga awal objek (Data (garis) pada objek dipisahkan #13#10 atau #13 )

Jenis objek “paling penting” di badan file PDF memiliki nama yang membanggakan "/Katalog"

4 0 keberatan<< /Type /Catalog /Pages 2 0 R /OpenAction [ 5 0 R /XYZ null 364 1 ] /PageMode /UseNone >>endobj

Faktanya, seharusnya ada 3 objek “utama” di badan file PDF minimal “Halo Dunia”. Izinkan saya mencantumkannya berdasarkan jenis:

  • "/Katalog" berisi tautan: ke pohon halaman ( /Halaman)
  • "/Halaman" berisi tautan ke sekelompok halaman dokumen (Misalnya 2 0 obj > endobj)
  • "/Halaman" berisi tautan ke objek yang terkait dengan halaman tertentu.
(Misalnya 3 0 obj > /Putar 0 >>)

Dan beberapa yang kecil

  • Mari kita menganalisis objek halaman:/Memutar
  • bidang yang menunjukkan berapa derajat gambar halaman harus diputar saat ditampilkan dalam program/Kotak Media Dan/Kotak Pangkas
  • bidang yang menjelaskan ukuran halaman/Induk "/Halaman"
  • referensi ke objek induk/Sumber daya
  • bidang ini menjelaskan font mana yang harus digunakan saat menampilkan halaman (font adalah objek terpisah) dan pengaturan ProcSet pengaturan ini menunjukkan konten apa yang ada dalam aliran data halaman ini (juga dapat didefinisikan sebagai objek, bukan sebagai bidang )/Isi
Bidang yang paling menarik pada objek “halaman” memberikan tautan ke objek konten halaman ini, dan: jika bidang ini tidak ada pada objek “halaman”, maka halaman tersebut kosong
Konten halaman: Obyek"sungai kecil" 4 0 obj > stream BT /F12 9 Tf 10 782 TD 0 -12.5 TD (Max Fokin) Tj 0 -12.5 TD (mnb) Tj 0 -12.5 TD() Tj 0 -12.5 TD (Max Privet) Tj 0 -12.5 TD (1) Tj 0 -12.5 TD (1) Tj 0 -12.5 TD (2) Tj 0 -12.5 TD (3) Tj 0 -12.5 TD (45) Tj ET endstream endobj /Length 305 bidang ini menunjukkan berapa banyak byte yang ada di dalamnya sebuah kata sungai kecil untuk kata itu

aliran akhir 4 0 obj > stream BT /F12 9 Tf 10 782 TD 0 -12.5 TD (Max Fokin) Tj 0 -12.5 TD (mnb) Tj 0 -12.5 TD() Tj 0 -12.5 TD (Max Privet) Tj 0 -12.5 TD (1) Tj 0 -12.5 TD (1) Tj 0 -12.5 TD (2) Tj 0 -12.5 TD (3) Tj 0 -12.5 TD (45) Tj ET endstream endobj /Length 305 bidang ini menunjukkan berapa banyak byte yang ada di dalamnya sebuah kata Opsi paling sederhana adalah aliran data yang tidak dikodekan dan tidak dikompresi dalam suatu objek . Itu terbatas pada operator BT Dan

DAN

  • BT Memulai Objek Teks - mencirikan awal teks ET Mengakhiri Objek Teks. - mencirikan akhir teks /F12 9 Tf/F12
  • 9 ini adalah nama kode objek yang menjadi ciri font yang digunakan pada halaman ini
  • ini adalah ukuran fontnya Tf ini adalah operator yang mencirikannya garis yang diberikan
pada objek steam terdapat pengaturan font dan ukurannya 10,782 TD adalah angka dimana garis ini dimulai (dihitung dari kiri sudut atas

) Tj adalah operator baris baru. Nah, di dalam tanda kurung adalah teks kita

Saya tidak menjelaskan aliran kode di sini. Hal ini didasarkan pada algoritma RC4, RC5, MD5. Apa itu objek huruf

  • 12 0 keberatan >/Ketik /Font
  • Tentu saja nama tipenya/Subtipe /Tipe1
  • nama subtipe/Nama /F7 F7

ini nama kodenya

  • PDF mendukung beberapa jenis font. Mereka tercantum di bawah ini
  • Tipe 1, termasuk subset dan "snapshot" Multiple Master
  • Tipe 3
  • TrueType, termasuk subset
Sejujurnya, saya tidak mengerti Tipe 3, TrueType, termasuk subset, Tipe 0, saya tidak bisa mengatakan apa pun tentangnya
Dan Tipe 1 adalah font berikut Courier Courier-Bold Courier-BoldOblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-BoldItalic Simbol ZapfDingbats

20 0 obj > endobj Ini adalah objek dengan nama kode untuk font tipe pertama. Dengan menggunakan nama kode ini Anda dapat dengan mudah mendapatkan objek itu sendiri font.

6 0 keberatan > SEMUA: yaitu minimum Terdiri dari objek-objek berikut:"katalog", "halaman", "halaman", "Sumber Daya" Obyek(secara opsional dapat hadir sebagai bidang di objek halaman), objek yang tidak diketik , sekelompok objek

"font" Apa yang terjadi ? Sebenarnya, ini adalah tabel teks biasa, dimulai dengan sebuah kata xref 0 27 dan tubuhnya memiliki tautan ke semua objek tidak langsung dalam dokumen. Berikut adalah contoh XREF 0 27 0000000021 65535 F 0000000016 00000 N 0000000105 00000 N 0000000169 00000 N 0000000356 00000 N 00000713 0000.000 N 00002.000 N 0000.000 N 0000.000 N 0000.000 N 0000.000 373 00000 N 0000001486 00000 N 0000001604 00000 N 0001725 00000 N 0000001850 00000 n 0000001967 00000 n 0000002084 00000 n 0000002203 00000 n 0000002326 00000 n 0000002439 00000 n 0000002558 00000 n 0000000 024 000 01 f 0000002751 00000 n 0000002831 00000 n 0000000000 00001 f 0000002915 00000 n 0000002955 00000 n

  • Angka-angka ini mempunyai arti sebagai berikut:
  • 0 - nomor objek pertama dalam tabel

27 - jumlah elemen tabel Elemen tabel pertama selalu berbentuk " XXXXXXXXXX 65535 f " dimana X adalah sebuah digit dan 65535 adalah nilai default untuk elemen pertama dalam tabel. Simbol "f" berarti " bebas

", yaitu benda tersebut tidak digunakan

  • Mari kita menganalisis elemen tabel ini.
  • 10 digit pertama adalah offset dari awal file hingga awal objek. 4 0 keberatan

0000000016 berarti 16 byte dari awal file Anda akan menemukan penyebutan objek pertama kali, misalnya, Lima digit kedua adalah nomor pembuatan file. Jika file baru saja dibuat, maka selalu nol. Jika file diubah, maka jumlah ini bertambah satu. Yaitu,

0000000024 00001 f

File PDF kanonik yang baru saja kita buat hanya memiliki satu tabel. Tapi, kalau filenya diedit, tabelnya bisa banyak. Hubungan tabel dilakukan dengan menggunakan elemen terakhir dan kata kode

mulaixref File PDF kanonik yang baru dibuat hanya memiliki satu tabel, setelah tabel ada elemen cuplikan dan kata kode, menunjukkan offset dari awal file hingga awal tabel, berikut contohnya. ? Sebenarnya, ini adalah tabel teks biasa, dimulai dengan sebuah kata trailer > startxref 173 %%EOF Artinya setelah 173 byte dari awal dokumen, kata kode akan ada . Namun jika file sudah di edit, maka trailer terakhir pada file tersebut akan terlihat seperti: xref 0 3 0000000000 65535 f 0000003609 00000 n 0000003832 00000 n trailer ] >> startxref 173 %%EOF Tapi, jika kita beralih ke tabel dimana titik tautannya mulaixref 173 maka kita akan menemukannya tabel berikut , dan di belakangnya ada trailer yang memiliki lapangan/Sebelumnya 3896

3 16 0000000016 00000 n 0000000664 00000 n 0000000936 00000 n 0000001106 00000 n 0000001133 00000 n 0000001250 00000 n 000000139 5 00000 n 0000001811 00000 n 0000001992 00000 n 0000002180 00000 n 0000002360 00000 n 0000002760 00000 n 0000003438 00000 n 516 000 n 0000000776 00000 n 0000000916 00000 n cuplikan ] >> startxref 567 %%EOF , dan di belakangnya ada trailer yang memiliki lapangan Bidang ini mengarahkan kita ke tabel sebelumnya, dan tautannya mulaixref 567 dan kata kode menunjuk ke tabel berikutnya dan seterusnya hampir tanpa batas, hingga di kolom berikutnya 0 kita tidak akan melihat

. Artinya kita sudah membaca semua tabel. Esai ini tentu saja tidak memiliki kode sumber. Ini dia: dua modul utama disajikan" Dokumen PDF "dan pembantu""

PDFBaseFont

  • File yang dilampirkan pada materi: Kode sumber modul PDFDocument.pas dan PDFBaseFonts.pas (16 K)

pembaruan dari 23/09/2005 07:02:00

Pembahasan materi [ 31/07/2006 06:33 ] 7 pesan

  • Untuk contoh ini, kita memerlukan komponen berikut, yang terletak di tab Rave. Jadi mari kita mulai menginstal komponen-komponen yang kita perlukan, yaitu:
  • Penulis TRvNDRW
  • TRvRenderPdf

Tombol T Saya mengusulkan untuk memikirkan sedikit tentang komponen-komponen ini dan memahami apa fungsinya. Ngomong-ngomong, aku mendapat informasi tentang mereka dari beberapa buku yang aku beli progbook.ru

. Oleh karena itu, jika Anda ingin membeli buku-buku yang layak tentang Delphi, Anda dipersilakan di toko ini. Jadi, pertama-tama kita punya ada komponen

Penulis TRvNDRW. Kita memerlukan komponen ini untuk menulis informasi ke file pdf, tidak peduli apa pun, teks atau grafik, melalui aliran.

Komponen selanjutnya adalah TRvRenderPdf. Kita membutuhkannya untuk membuat, atau lebih tepatnya untuk menggambar, informasi, baik itu teks maupun grafik. Oleh karena itu, setelah mengklik tombol tersebut, kami akan menulis informasi yang kami perlukan ke dalam file pdf kami.

Tapi jangan banyak basa-basi, tapi langsung saja ke topik yang kita minati, yaitu pemrograman :)

Pertama, kita perlu membuat file pdf kosong biasa dan menempatkannya di folder root program kita.

Sebenarnya, dengan kode ini kita membuat aliran di mana kita akan menggambar informasi yang kita butuhkan, setelah itu kita mulai merender, menunjukkan file pdf akhir kita ke mana data akan diambil, dan pada akhirnya kita menutup aliran tersebut.

Setelah mengeksekusi ini, kita memerlukan suatu peristiwa yang terjadi ketika mengambil data; dalam peristiwa ini kita akan menampilkan informasi yang kita butuhkan.

Mari kita lihat kodenya. Untuk memulainya, saya memuat gambar *.bmp, membuat variabel bmp, dan objek kelas TBitmap. Saya mengunduhnya sehingga saya dapat menggambar di file pdf kami.

Saya pikir tidak ada gunanya menjelaskan semuanya lebih jelas, jadi, prosedur PrintHeader menambahkan tulisan ke header dokumen, prosedur PrintFooter menambahkan tulisan ke akhir dokumen. Prosedur PrintBitmap menambahkan gambar ke dokumen, prosedur SetFont mengatur font dokumen yang diperlukan, prosedur FontColor mengatur warna font dokumen yang diinginkan.

Semua fungsi dan prosedur grafis selanjutnya sama persis dengan keluaran informasi grafis di atas Kanvas komponen lainnya.

Saya menggunakan fungsi NewPage untuk membuat lembar baru dalam dokumen. Segala sesuatu yang akan ditambahkan setelahnya untuk menampilkan informasi akan ditampilkan pada lembar dokumen baru.

Penting sehingga semua modul: RpRender, RpRenderPDF, RpDefine, RpBase, RpFiler, RpRave, RpCon terhubung ke proyek!

Ada dua cara utama untuk mengatur tampilan dokumen PDF dalam program ini.

  • Menggunakan teknologi ActiveX;
  • Penggunaan komponen khusus.

Komponen untuk bekerja dengan PDF tidak tersedia di semua rilis Delphi dan paling sering komponen tersebut perlu dicari dan diinstal tambahan. Pada saat yang sama, untuk menggunakan ActiveX Anda hanya perlu memiliki yang sesuai perangkat lunak. Dalam hal ini Adobe Akrobat Pembaca (gratis) atau Adobe Acrobat.

Bekerja dengan ActiveX dapat dibagi menjadi dua tahap.

  • Mengimpor perpustakaan tipe atau komponen;
  • Sebenarnya penggunaan alat impor dalam aplikasi.
Mengimpor komponenAktifX

Untuk mengimpor komponen, gunakan perintah “Komponen” – “Impor Komponen” di menu utama Delphi. Proses impor itu sendiri diimplementasikan sebagai wizard.

Di halaman pertama wizard, pilih “Impor Kontrol ActiveX”.

Setelah ini, Anda perlu memutuskan apa yang harus dilakukan dengan komponen yang diimpor. Karena kami berencana menggunakannya sebagai komponen Delphi, pilih “Instal ke Paket Baru”.

Sekarang yang tersisa hanyalah menentukan nama paket yang baru dibuat.

Setelah mengklik tombol “Selesai”, komponen ActiveX untuk Penampil PDF akan diimpor ke Delphi.

MelihatPDF dalam lampiran

Untuk membuat penampil PDF di aplikasi menggunakan ActiveX, Anda memerlukan komponen TAcroPDF. Proses mengimpornya dijelaskan secara rinci di atas.

Sebagai contoh, mari kita berkreasi aplikasi berikutnya. Mari kita tempatkan komponen TAcroPDF, TOpenDialog dan TButton pada form seperti yang ditunjukkan pada gambar di bawah.

Saat Anda mengklik tombol tersebut, kami memanggil dialog buka file untuk memilih file PDF yang akan dilihat.

Kemampuan komponen yang dinyatakan oleh pengembang:

  • Vektor dan grafis raster dalam dokumen PDF
  • Lindungi dokumen PDF dengan kata sandi
  • Dukungan formulir AcroForms/PDF
  • Tanda air
  • Generasi dokumen PDF dengan internal dan tautan eksternal, tautan web, dan bookmark
  • Dukungan Unicode penuh
  • Dukungan untuk berbagai font, pemformatan teks, tata letak teks multi-kolom
  • Dukungan TCanvas
  • Pengarsip bawaan untuk mengompresi teks dan informasi grafik dalam dokumen
  • Konversi TIFF ke PDF

Sebagai contoh, saya memutuskan untuk membuat aplikasi demo yang dibundel dengan komponennya THotPDF. Aplikasi ini cukup sederhana - menghasilkan PDF dengan dua link dan teks sederhana. Kodenya juga sederhana dan jelas:

prosedur TForm1. HelloWorldButtonClick(Pengirim: TObject);

mulaiHPDF. MulaiDok; HPDF. Halaman Saat Ini. PrintHyperlink(20, 35, "Situs Web: " + MainEdit.Teks, MainEdit.Teks); HPDF. Halaman Saat Ini. SetFont("Times New Roman", , 16);

Dua persegi panjang biru dalam dokumen ini adalah link ke dua halaman... dan teks sederhana "Klik link untuk menavigasi" tidak terlihat sama sekali. Meskipun demikian, kita harus memberi penghormatan, ketika Anda mengklik persegi panjang tersebut, tautannya benar-benar terbuka. Secara umum, pengembang sedang terburu-buru mengumumkan dukungan untuk Delphi hingga XE3, atau versi uji coba sangat menarik, tetapi setelah menjalankan demo ini saya entah bagaimana kehilangan keinginan untuk menggunakan THotPDF bahkan secara gratis. Mari kita lanjutkan.

4. Percontohan Pembuat PDF

Harga: dari $450 tanpa kode sumber hingga $9950 (!!!) dengan kode sumber
5-XE4
http://www.colorpilot.com/pdflibrary.html#download

Harga perpustakaannya hampir sama dengan Delphi XE3 Professional... Baiklah, mari kita lihat apa saja perpustakaan ini.

Fitur yang dinyatakan oleh pengembang:

  • Serangkaian metode dan properti yang diperluas untuk memudahkan pembuatan PDF;
  • Membaca dan menggabungkan dokumen PDF yang ada;
  • Menambah dan menghapus halaman dokumen PDF;
  • Dukungan Unicode;
  • Membuat tanda air untuk setiap halaman;
  • Menambahkan thumbnail ke dokumen PDF;
  • Menggunakan dan menyematkan font (TrueType, OpenType, Type1, dll.);
  • Buat dokumen PDF interaktif menggunakan JavaScript dan hyperlink;
  • Dukungan elemen interaktif AcroForm: bidang teks input, tombol, tombol radio, daftar drop-down, kotak centang;
  • enkripsi dan perlindungan kata sandi dari dokumen PDF yang dibuat;
  • Pembuatan dan pengelolaan konten dokumen;
  • Akses HDC untuk menggambar di halaman PDF menggunakan fungsi WinAPI.
  • Penggunaan gambar dalam berbagai format (JPEG, TIFF, PNG, BMP, GIF);
  • Membuat dan menggunakan anotasi;
  • Buat dokumen PDF di disk atau di memori;
  • Ekstrak teks dari dokumen PDF;

Secara keseluruhan, daftar fiturnya cukup mengesankan. Mari kita lihat bagaimana beberapa fitur ini bekerja dalam praktiknya. Unduh versi demo dan instal.

Setelah instalasi, luncurkan Delphi (dalam kasus saya Delphi XE3) dan masuk ke menu:

Komponen - Impor Komponen - Impor Perpustakaan Jenis

Kami mencari perpustakaan dalam daftar

Kami mengimpor, membuat proyek baru dan menghubungkan modul ke kegunaannya PDFCreatorPilotLib_TLB.

Sekarang kita dapat menguji pengoperasian perpustakaan menggunakan beberapa contoh langsung. Pertama, mari kita coba membuat dokumen dengan teks sederhana:

prosedur TForm1. Button1Click(Pengirim: TObject);

var fnt: bilangan bulat;

mulai (inisialisasi) PDF := TPDFDocument4. Buat(nihil);

PDF. SetLicenseData ("demo" , "demo" ) ;


fnt:=pdf. AddFont ("Verdana" , false , false , false , false , fcANSI) ; PDF. GunakanFont(fnt, 14); PDF. ShowTextAt(20, 40, "HALO, PDF!");

(simpan) PDF. SaveToFile("HaloPDF.pdf", benar);

Harga: PDF. Menghancurkan; akhir ;
Luncurkan aplikasi dan lihat dokumen PDF yang dibuat: Sekarang mari kita coba menulis teks Rusia ke file:
prosedur TForm1. Button1Click(Pengirim: TObject);

mulai ( inisialisasi ) (...) PDF. ShowTextAt(20, 40, "Halo, PDF!"); ( simpan ) (...) akhir ; Mungkin di suatu tempat di properti kelas Anda perlu mengkonfigurasi sesuatu, memanggil beberapa metode yang akan mengaktifkan dukungan Unicode, TAPI untuk uang sebanyak itu saya ingin mendapatkan perpustakaan yang akan langsung berfungsi tanpa kerumitan dengan pengaturan dan penyesuaian. .. Omong-omong, metode untuk memasukkan tautan (AddHyperLink) juga tidak berfungsi - dokumen tetap asli meskipun tautan tersebut seharusnya dimasukkan. Tapi, kita harus memberi penghormatan, upaya untuk memasukkan ke dalamnya

dokumen baru PDF yang dibuat sebelumnya - berfungsi dengan baik - dokumen dimasukkan ke halaman baru sebagaimana mestinya, tanpa kusen. 5. PDFtoolkit VCL v4.0.1.293 dari $349 tanpa sumber hingga $499 dengan sumber Versi Delphi yang didukung: 6-XE4 "Halaman unduh versi uji coba: http://www.gnostice.com/PDFtoolkit_VCL.asp?show=downloads Ada cukup banyak tentang pustaka komponen dari Gnostice ini" umpan balik positif di web. Menurut kemungkinan perangkat PDF hampir 1 banding 1 bersesuaian Percontohan Pembuat PDF, itu. dapat “merekatkan” PDF, mengenali teks, menyisipkan tautan, mencari dokumen, dll. Namun, tidak seperti Percontohan Pembuat PDF,

Tentu saja, sehubungan dengan tugas saya, PDFtoolkit ternyata praktis tidak berguna, karena... Saya tertarik untuk membuat PDF dari awal, tetapi bagi mereka yang menulis penampil PDF sendiri, menurut saya perpustakaan ini lebih dari cocok.

Jadi, apa yang kita punya pada akhirnya? Ada 5 solusi berbeda untuk membuat dan bekerja dengan dokumen PDF di Delphi. Setiap solusi memiliki kelebihan (gratis, canggih) dan kekurangan (biaya selangit, masalah dengan Unicode, dll.). Sehubungan dengan masalah saya, semua solusi harus “dikerjakan dengan file.” Di sisi lain, ada banyak yang berbayar dan layanan gratis untuk menghasilkan PDF, namun, mengingat bahwa layanan seperti itu cenderung tiba-tiba mati, saya merasa tidak ingin terlibat dengannya. Tentu saja ada satu solusi lagi - solusi buatan sendiri dan tidak sepenuhnya dalam tema Delphi, tetapi lebih dari itu lain kali, tetapi untuk saat ini saya akan memikirkan apa yang harus dilakukan dengan klien untuk DelphiFeeds


Sampai jumpa daring!

Pada artikel ini, kita akan melihat cara membuatnya sendiri pdf-dokumen, dan di artikel berikutnya kita akan melihat bagaimana Anda dapat melihatnya pdf-dokumen dalam proyek Anda, serta konten cetak, menavigasi dokumen, dan sebagainya.

Untuk ini kita memerlukan komponen dari tab Sambutan hangat. Mari kita instal komponen yang kita perlukan untuk bekerja, dan ini adalah:

  • Penulis TRvNDRW
  • TRvRenderPdf
  • Tombol T

Komponen Penulis TRvNDRW dimaksudkan untuk merekam pdf-informasi file (teks, grafik) melalui aliran.

Komponen TRvRenderPdf dirancang untuk membuat dan menggambar informasi (teks, grafik, dll.). Nah, ketika Anda menekan tombol, kita akan memasukkan sesuatu ke dalam milik kita pdf-mengajukan.

Kami tidak akan menulis banyak tentang teori, tetapi kami akan segera beralih ke pemrograman, tetapi kami harus terlebih dahulu membuat kekosongan biasa pdf-file dan letakkan di root program. Di sebelah acara DiKlik Untuk tombol kami, kami akan menulis kode berikut:

prosedur TForm1. Button1Click(Pengirim: TObject);

var Aliran: TMemoryStream;

mulai Aliran: = TMemoryStream. membuat ; RvNDrWriter1. Aliran := Aliran; Penulis TRvNDRW RvNDRWriter1. Jalankan; dari komponen ini, setelah itu kita menemukan acara tersebut Di Cetak dan pada event ini kita menulis kode berikut:

prosedur TForm1. Cetak(Pengirim: TObject);

mulai bmp: = TBitmap. Membuat ; bmp. LoadFromFile("test.bmp"); dengan RvNDRWriter1 mulai SetFont("Arial" , 16) ; Warna Font: = clHijau; Cetak("Tes Teks" ); PrintHeader("Mulai File PDF", pjCenter) ; PrintFooter("Akhiri File PDF", pjCenter) ; BarisKe(10, 10) ; pdf CetakBitmap(1, 1, 1, 1, bmp) ;

akhir ; GratisDanNil(bmp); akhir ; Baiklah kita upload dulu gambarnya. *.bmp, tentu saja bervariasi bmp, kami memiliki objek kelas Peta Bittmap. Kami mengunduhnya untuk kemudian menggambarnya di milik kami -dokumen. Dan kemudian, saya pikir semuanya sudah jelas, prosedurnya