PDF dosyalarının oluşturulması üzerine deneme. PDF oluşturma üzerine deneme pdf delphi okuma

Bu yazıda, kendi işinizi nasıl oluşturacağınıza bakacağız. pdf-belgeler ve bir sonraki makalede nasıl görüntüleyebileceğinizi ele alacağız pdf-Projelerindeki belgeler, içeriği yazdırmanın yanı sıra belgede gezinme vb.

Bunun için sekmeden bileşenlere ihtiyacımız var çılgın... Çalışmamız gereken bileşenleri yükleyelim ve bunlar:

  • TRvNDRWyazarı
  • TRvRenderPdf
  • T Düğmesi

Bileşen TRvNDRWyazarı kayıt için tasarlanmıştır pdf-dosya bilgileri (metin, grafik) bir akış aracılığıyla.

Bileşen TRvRenderPdf bilgi (metin, grafik vb.) oluşturmak, işlemek için tasarlanmıştır. Peki, düğmeye basarak, içine bir şey gireceğiz. pdf-dosya.

Teoriden çok fazla yazmayacağız, ancak hemen programlamaya geçeceğiz, ancak önce sıradan bir boş oluşturmalıyız. pdf-file ve programın kök dizinine koyun. Etkinliğin devamı Tıklamada butonumuz için aşağıdaki kodu yazacağız:

prosedür TForm1. Button1Click (Gönderen: TObject); var Streams: TMemoryStream; Akışları başlat: = TMemoryStream. oluşturmak; RvNDrWriter1. Akış: = Akışlar; RvNDRWriter1. Uygulamak; RvRenderPdf1. PrintRender (Akışlar, "test.pdf"); ShellExecute (Handle, nil, "test.pdf", "", "", SW_SHOW); FreeAndNil (Akışlar); son;

Tüm bilgileri çizeceğimiz bir akış oluşturuyoruz, ardından işlemeye başlıyoruz, verilerin çekileceği dosyayı belirliyoruz ve sonunda akışı yok ediyoruz.

Şimdi, tüm bilgilerimizi göstereceğimiz veri çizerken meydana gelen bir olaya ihtiyacımız var. Bileşenin seçilmesi TRvNDRWyazarı ve bu bileşenin olay listesini gözden geçirin, ardından olayı buluruz OnPrint ve bu durumda aşağıdaki kodu yazıyoruz:

prosedür TForm1. Yazdır (Gönderen: TObject); bmp'yi başlat: = TBitmap. Oluşturmak; bmp. LoadFromFile ("test.bmp"); RvNDRWriter1 ile SetFont'u başlatın ("Arial", 16); FontColor: = clGreen; Yazdır ("Test Metni"); PrintHeader ("PDF Dosyasını Başlat", pjCenter); PrintFooter ("PDF Dosyasını Sonlandır", pjCenter); LineTo (10, 10); PrintBitmap (1, 1, 1, 1, bmp); son; FreeAndNil (bmp); son;

Peki önce bir resim yüklüyoruz * .bmp doğal olarak değişken bmp, bir sınıf nesnemiz var TBitmap... Daha sonra çizmek için yüklüyoruz. pdf-belge.

Ve sonra, sanırım her şey açık, prosedür Baskı Başlığı- belgenin (sayfa), prosedürün başlığında bir yazı görüntüler YazdırAltbilgi- belgenin sonundaki yazıyı görüntüler (sayfa). prosedür PrintBitmap- belgedeki görüntüyü görüntüler, prosedür SetFont- belge yazı tipini, prosedürü ayarlar Yazı rengi- belgenin yazı tipi rengini ayarlar.

Bir programda PDF belgelerinin görüntülenmesini organize etmenin iki ana yolu vardır.

  • ActiveX teknolojisini kullanarak;
  • Özel bileşenlerin kullanımı.

PDF ile çalışma bileşenleri tüm Delphi sürümlerinde bulunmaz ve çoğu zaman bunları ek olarak aramanız ve yüklemeniz gerekir. Aynı zamanda ActiveX'i kullanmak için uygun yazılım... V bu durum Adobe Acrobat Reader (ücretsiz) veya Adobe Acrobat.

ActiveX ile çalışmak kabaca iki aşamaya ayrılabilir.

  • Bir tür veya bileşen kitaplığının içe aktarılması;
  • Aslında uygulamada ithal fonların kullanımı.
Bileşenleri içe aktarmaActiveX

Bileşenleri içe aktarmak için Delphi ana menüsündeki "Bileşen" - "Bileşeni İçe Aktar" komutunu kullanın. İçe aktarma işleminin kendisi bir sihirbaz olarak uygulanır.

Sihirbazın ilk sayfasında "ActiveX Denetimini İçe Aktar" seçeneğini seçin.

Bundan sonra, içe aktarılan bileşenlerle ne yapacağınıza karar vermeniz gerekir. Delphi bileşenleri şeklinde kullanılması planlandığı için "Install to New Package" seçeneğini seçiyoruz.

Şimdi geriye sadece yeni oluşturulan paketin adını belirtmek kalıyor.

"Son" düğmesine tıkladıktan sonra, ActiveX bileşenlerini görüntüleyen PDF Delphi'ye aktarılacaktır.

görüşUygulamada PDF

ActiveX kullanarak bir uygulamada görüntülenen PDF dosyaları oluşturmak için TAcroPDF bileşeni gereklidir. İçe aktarma işlemi yukarıda ayrıntılı olarak açıklanmıştır.

Örnek olarak aşağıdaki uygulamayı oluşturalım. TAcroPDF, TOpenDialog ve TButton bileşenlerini aşağıdaki ekran görüntüsünde gösterildiği gibi forma yerleştirin.

Düğmeye tıkladığınızda, görüntülemek üzere bir PDF dosyası seçmek için dosya açma iletişim kutusunu çağırırız.


yayın tarihi 09/23/2005 07:00 PDF dosyalarının oluşturulması üzerine deneme

V son zamanlarİnternette çok sayıda PDF dönüştürücü, okuyucu ve yazma "s bulundu. Ve bunların büyük çoğunluğu para için teklif edildi. Programın kendisi 10 ila 300 dolar arasındadır. Ve çok daha fazla para için kaynak kodu, fiyat 200 dolardan başlıyor ve bir yerde (bununla ilgilenerek internette tırmandım) 900 avroya kadar.

Programlama açısından bu sorunla ilgilendim ve sonuçları dikkatinize sunuyorum. (Bu sonuçlar tarafımdan iç kısımları incelerken elde edilmiştir. PDF dosyası ve onu açtığınızda toplam Amir F3) aracılığıyla

Normal bir PDF dosyasının dört bölümü vardır :=

Nedir

? Bu, PDF belirtim sürümüne genel bir referanstır. Hangi PDF dosyasının ilk satırında bulunur. Örneğin "% PDF-1.3" Bu yaz başında bir ara çıkan akrobat'ın yedinci versiyonunda bu sayı "% PDF-1.7" ama bu ürünün bir versiyonu değil, bu spesifikasyonun versiyonu. PDF'nin ikinci satırı küçük bir anlamsız ifadedir (görünüşe göre daha fazla kullanım için tasarlanmıştır) "% vgpu"

Herkes PDF'nin ilk bölümünü sıraladı.

ikinci kısma ne denir ?

Cevap çok basit: açıklaması başlık gibi metin biçiminde sunulan bir nesne dizisidir.

Her nesne, adında bir seri numarası olan bir metin parçasıdır, örneğin "4 0 nesne"

  • 4 bu, nesnenin seri numarasıdır
  • 0 bu, dosyanın (yeniden) nesil numarasıdır, yani dosya güncellendiğinde (düzenlendiğinde) sonra verilen numara artışlar
  • nesne bu, belgenin gövdesinde bir nesneyle karşılaştığımız anlamına gelen bir kod sözcüğüdür.

Tüm nesneler dolaylı ve doğrudan olarak ayrılmıştır. Hepsi dolaylı ve çoğu kelimeden sonra nesne vücutlarında bir sınırlayıcı var "<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">> "ve kod sözcüğü endobj

Doğrudan nesnelerin gövdelerinde açma ve kapama sınırlayıcıları olmamalıdır "<<", ">> "Tüm dolaylı nesnelere şuradan erişilebilir: çapraz referans tablosu... Dosyanın başlangıcından nesnenin başına kadar ofset şeklinde bağlantılar sunar (nesnedeki veriler (satırlar) ayrılır #13#10 veya #13 )

PDF dosyasının gövdesindeki "en önemli" nesnenin türü gurur verici bir ada sahiptir "/ Katalog"

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

Aslında, "Merhaba dünya" türündeki minimal bir PDF dosyasının gövdesinde 3 "ana" nesne olmalıdır. Türlerine göre sıralayayım:

  • "/ Katalog" bir bağlantı içerir: sayfa ağacına ( / Sayfalar)
  • "/ Sayfalar" bir grup belge sayfasına bir bağlantı içerir (Örneğin 2 0 obj> endobj)
  • "/ Sayfa" belirli bir sayfayla ilgili nesnelere bir bağlantı içerir. (Örneğin 3 0 nesne> / Döndür 0 >>)
Ve birkaç "küçük"

Sayfa nesnesini ayrıştıralım:

  • / Döndür programda görüntülendiğinde sayfa görüntüsünün kaç derece döndürülmesi gerektiğini gösteren alan
  • / Medya Kutusu ve / Kırpma Kutusu sayfa boyutunu tanımlayan alanlar
  • / Ebeveyn ebeveyn referansı "/ Sayfalar"
  • / Kaynaklar bu alan, sayfayı görüntülerken hangi yazı tipinin kullanılması gerektiğini açıklar (bir yazı tipi ayrı bir nesnedir) ve ProcSet ayarı bu ayar, bu sayfanın veri akışının hangi içeriğini gösterir (alan olarak değil nesne olarak da tanımlanabilir)
  • / İçindekiler"Sayfa" nesnesindeki en ilginç alan, bu sayfanın içerik nesnesine bir bağlantı verir ve: "sayfa" nesnesinde bu alan yoksa, sayfa boştur.
Sayfa içeriği:
Bir obje "aktarım" 4 0 nesne> akışı 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 Özel) 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 / Uzunluk 305 bu alan, bir kelime aktarım kelimeye son akım

En basit seçenek, bir nesnedeki kodlanmamış ve sıkıştırılmamış bir veri akışıdır. aktarım... Operatörlerle sınırlıdır. BT ve ET

BT Bir Metin Nesnesine Başlar - metnin başlangıcını karakterize eder ET Bir Metin Nesnesini Bitirir. - metnin sonunu karakterize eder / F12 9 Tf

  • / F12 bu, bu sayfada kullanılan yazı tipini karakterize eden nesnenin kod adıdır.
  • 9 bu yazı tipi boyutu
  • tf bu, bir steam nesnesindeki belirli bir dizenin bir yazı tipi ve boyut ayarı olduğunu karakterize eden bir operatördür.
10 782 TD bunlar verilen satırın başladığı sayılardır (sayım sol üst köşeden yapılır) Tj yeni satır operatörüdür Peki, parantez içinde metnimiz var

Burada kod akışını açıklamıyorum. RC4, RC5, MD5 algoritmalarına dayanmaktadır.

nesne nedir Yazı tipi 12 0 nesne>

  • / Tür / Yazı Tipi Doğal olarak türün adı
  • / Alt tip / Tip1 alt tür adı
  • / İsim / F7 F7 bu kod adı

PDF, çeşitli yazı tiplerini destekler. Aşağıda listelenmiştir

  • Alt kümeler ve Çoklu Ana "anlık görüntüler" dahil olmak üzere Tip 1
  • Tip 3
  • TrueType, alt kümeler dahil
  • 0 yazın
Dürüst olmak gerekirse, Type 3, TrueType, alt kümeler dahil Type 0'ı anlamadım, onlar hakkında bir şey söyleyemem.
Ve Tip 1 aşağıdaki yazı tipleridir Courier Courier-Bold Courier-Bold Oblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-Bold Oblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-BoldItalic Symbol ZapfDingbats

20 0 obj> endobj Bu, tip 1 yazı tipleri için kod adlarına sahip bir nesnedir. Bu kod adıyla nesnenin kendisini kolayca alabilirsiniz. yazı tipi... 6 0 nesne>

TÜMÜ: yani, minimum Aşağıdaki nesnelerden oluşur: "katalog", "sayfalar", "sayfa", "Kaynaklar"(isteğe bağlı olarak sayfa nesnesinde bir alan olarak bulunabilir), yazılmamış nesne "aktarım", nesne grubu "yazı tipi"

Ne ? Aslında bu sıradan bir metin tablosudur, kelime ile başlar. xref ve gövdesinin belgedeki tüm dolaylı nesnelere referansları vardır. İşte bir örnek xref 0 27 0000000021 65535 f 0000000016 00000 n 0000000105 00000 n 0000000169 00000 n 0000000356 00000 n 0000000713 00000 n 00000000892 00000 n 0000001006 00000 n 0000001125 00000 n 00000012000n 0000001125 00000 n 00000086000000n 000000003000n 0140000000n n1604 0018 0000001967 00000 n 0000002084 00000 n 0000002203 00000 n 0000002326 00000 n 0000002439 00000 n 0000002558 00000 n 0000000024 00001 f 0000002751 00000 n 0000002831 00000 n 00000000002900015000 n 0000000002900001 0 00055000n55000 0 27 Bu sayılar aşağıdakileri gösterir:

  • 0 - tablodaki ilk nesne numarası
  • 27 - tablodaki eleman sayısı

Tablonun ilk elemanı her zaman " şeklindedir. XXXXXXXXX 65535 f"burada X bir sayıdır ve 65535 tablodaki ilk öğe için varsayılandır." f "sembol " Bedava", yani nesne kullanılmıyor

Bu tablonun elemanını analiz edelim.

  • İlk 10 basamak, dosyanın başlangıcından nesnenin başına kadar olan uzaklıktır.
  • 0000000016, dosyanın başlangıcından 16 bayt sonra nesnenin ilk sözüyle karşılanacağınız anlamına gelir, yani, örneğin, 4 0 nesne

İkinci beş basamak dosya oluşturma numarasıdır. Dosya yeni oluşturulduysa, bunlar her zaman sıfırdır. Dosya değiştirilirse, bu sayı bir artırılır. Yani, 0000000024 00001 f

Yeni oluşturulan kurallı PDF'nin yalnızca bir tablosu vardır. Ancak, dosya düzenleniyorsa, bu tür birçok tablo olabilir.

Tabloların ilişkisi son eleman kullanılarak gerçekleştirilir. ve kod kelimesi startxref

Kurallı, yeni oluşturulan PDF dosyasında yalnızca bir tablo vardır, tablodan sonra bir öğe vardır tanıtım videosu Ve fragmandan sonra kod kelimesi gelir startxref Dosyanın başlangıcından tablonun başına kadar olan ofseti gösteren, işte bir örnek. treyler> startxref 173 %% EOF Bu, belgenin başlangıcından itibaren 173 bayttan sonra bir kod kelimesi olacağı anlamına gelir. xref... Ancak, dosya düzenlendiyse, dosyadaki son fragman şöyle görünecektir: xref 0 3 0000000000 65535 f 0000003609 00000 n 0000003832 00000 n trailer] >> startxref 173 %% EOF Ancak tabloya dönersek bağlantı nereye işaret ediyor başlangıç ​​xref 173, sonra bir sonraki tabloyu bulacağız, ardından alana sahip olacak treyler / Önceki 3896 3 16 0000000016 00000 n 0000000664 00000 n 0000000936 00000 n 0000001106 00000 n 0000001133 00000 n 0000001250 00000 n 0000001395 00000 n 0000001811 00000 n 0000001992 00000 n 0000002180 00000 n 000000023000n 02760000n başlat % EOF

Bu alan / Önceki 3896 bizi önceki tabloya yönlendirir ve bağlantı başlangıçxref 567 bir sonraki tabloya işaret eder vb. neredeyse süresiz olarak, bir sonraki alanda ise startxref görmeyeceğiz 0 ... Bu, tüm tabloları okuduğumuz anlamına gelir.

Bu deneme, elbette, kaynak kodundan yoksundur. İşte burada: iki ana modül var " PDFBelge"ve yardımcı" PDFBaseFont'lar"

Dosyalar malzemeye eklenir:

Malzemenin tartışılması[07/31/2006 06:33] 7 gönderi

Geliştiriciler tarafından açıklanan bileşenin özellikleri:

  • PDF belgelerinde vektör ve bitmap grafikleri için destek
  • PDF belgelerini parolayla koruyun
  • AcroForms / PDF formları desteği
  • Su işaretleri
  • Nesil PDF belgeleri dahili ve harici bağlantılar, web bağlantıları ve yer imleri ile
  • Tam Unicode desteği
  • Çoklu yazı tipi desteği, metin biçimlendirme, çok sütunlu metin düzeni
  • TCanvas desteği
  • Metin sıkıştırmak için yerleşik arşivleyici ve grafik bilgi belgede
  • TIFF'yi PDF'ye Dönüştür

Örnek olarak, bileşenle birlikte gelen bir demo uygulaması oluşturmaya karar verdim. THotPDF... Uygulama oldukça basittir - iki bağlantı ve düz metin içeren bir PDF oluşturur. Kod da basit ve anlaşılır:

prosedür TForm1. HelloWorldButtonClick (Gönderen: TObject); HPDF'yi başlatın. BeginDoc; HPDF. Geçerli sayfa. PrintHyperlink (20, 35, "Web sitesi:" + MainEdit. Text, MainEdit. Text); HPDF. Geçerli sayfa. SetFont ("Times New Roman", 16); HPDF. Geçerli sayfa. SetRGBHyperlinkColor (clRed); HPDF. Geçerli sayfa. PrintHyperlink (20, 50, "Sipariş sayfası:" + BuyEdit. Text, BuyEdit. Text); HPDF. Geçerli sayfa. SetFont ("Times New Roman", 14); HPDF. Geçerli sayfa. TextOut (20, 75, 0, "Gezinmek için bağlantıya tıklayın"); HPDF. EndDoc; son;

Bileşenin inceliklerine bile girmeden, bu demo örneğinde neler olduğunu ve nasıl olduğunu anlayabilirsiniz. Başlıyoruz, bakıyoruz dış görünüş oluşturulan belge:

Belgedeki bu iki mavi dikdörtgen, iki sayfaya bağlantıdır ... ve "Gezinmek için bağlantıyı tıklayın" düz metni hiçbir yerde görünmez. Her ne kadar kredi vermeliyim ki, dikdörtgene tıkladığınızda bağlantı açılıyor. Genel olarak, geliştiriciler ya XE3'e kadar Delphi desteğini bildirmek için acele ettiler ya da deneme sürümü çok ilginç bir şekilde çalışıyor, ancak bu demoyu başlattıktan sonra THotPDF'yi ücretsiz olarak bile kullanma isteğimi bir şekilde kaybettim. Hadi devam edelim.

4. PDF Oluşturucu Pilotu

Fiyat: kaynaksız 450 $'dan kaynaklarla 9950 $'a (!!!)
5-XE4
http://www.colorpilot.com/pdflibrary.html#download

Kütüphane maliyeti neredeyse Delphi XE3 Professional kadar... Peki, tamam, bakalım bu kütüphane neymiş.

Geliştiriciler tarafından açıklanan özellikler:

  • Kolay PDF oluşturma için genişletilmiş yöntemler ve özellikler;
  • Mevcut PDF belgelerini okuma ve birleştirme;
  • Bir PDF belgesinin sayfalarını ekleme ve kaldırma;
  • Unicode desteği;
  • Her sayfa için filigran oluşturma;
  • Bir PDF belgesi için küçük resimler ekleme;
  • Yazı tiplerini kullanma ve gömme (TrueType, OpenType, Type1, vb.);
  • JavaScript ve köprüler kullanarak etkileşimli PDF belgeleri oluşturun;
  • Etkileşimli öğeler için destek AcroForm: metin giriş alanları, düğmeler, radyo düğmeleri, açılır listeler, onay kutuları;
  • oluşturulan PDF belgelerinin şifrelenmesi ve parola koruması;
  • Belge içeriğinin oluşturulması ve yönetimi;
  • WinAPI işlevlerini kullanarak PDF sayfalarında çizim yapmak için HDC'ye erişim.
  • Görüntüleri çeşitli formatlarda kullanma (JPEG, TIFF, PNG, BMP, GIF);
  • Ek açıklamaların oluşturulması ve kullanılması;
  • Diskte veya bellekte PDF belgeleri oluşturun;
  • PDF belgelerinden metin ayıklayın;

Sonuç olarak, oldukça etkileyici bir özellik listesi. Bu özelliklerden bazılarının pratikte nasıl çalıştığını görelim. Demo sürümünü indirin, kurun.

Kurulumdan sonra Delphi'yi başlatın (benim durumumda bu Delphi XE3'tür) ve menüye gidin:

Bileşen - Bileşeni İçe Aktar - Tür Kitaplığını İçe Aktar

Listede bir kütüphane arıyoruz

İçe aktarma, oluşturma yeni proje ve üniteyi kullanımlara dahil edin PDFCreatorPilotLib_TLB.

Şimdi canlı bir örnek kullanarak kütüphaneyi test edebiliriz. İlk olarak, bir düz metin belgesi oluşturmaya çalışalım:

prosedür TForm1. Button1Click (Gönderen: TObject); var fnt: tamsayı; (başlatma) PDF: = TPDFDocument4. Oluştur (sıfır); PDF. SetLicenseData ("demo", "demo"); fnt: = pdf. AddFont ("Verdana", yanlış, yanlış, yanlış, yanlış, fcANSI); PDF. UseFont (fnt, 14); PDF. ShowTextAt (20, 40, "MERHABA, PDF!"); (kaydedin) PDF'yi seçin. SaveToFile ("HelloPDF.pdf", doğru); PDF. Tahrip etmek; son;

Uygulamayı başlatıyoruz ve oluşturulan PDF belgesine bakıyoruz:

Şimdi bir dosyaya Rusça metin yazmaya çalışalım:

prosedür TForm1. Button1Click (Gönderen: TObject); start (başlatma) (...) PDF. ShowTextAt (20, 40, "Merhaba PDF!"); (kaydet) (...) son;


Belki sınıf özelliklerinde bir yerde bir şeyi yapılandırmanız gerekir, hala Unicode desteğini etkinleştirecek bir yöntem çağırın, AMA böyle bir para için ayarlar ve bükülmelerle ilgili herhangi bir sorun olmadan hemen "kutudan çıkar çıkmaz" çalışacak bir kitaplık almak istiyorum ... Bu arada, bir bağlantı ekleme yöntemi (AddHyperLink) de işe yaramadı - bağlantının eklendiği iddia edilmesine rağmen belge bozulmadan kaldı. Ancak, daha önce oluşturulmuş bir PDF-ku'yu yeni bir belgeye ekleme girişimi - bir patlama ile çalıştı - haraç ödemeliyiz - belge, pervaz olmadan olması gerektiği gibi yeni sayfaya eklendi.

5. PDFtoolkit VCL v4.0.1.293

Fiyat: kaynaksız 349 $'dan kaynaklarla 499 $'a
Desteklenen Delphi sürümleri: 6-XE4
Deneme indirme sayfası: http://www.gnostice.com/PDFtoolkit_VCL.asp?show=downloads

Web üzerinde Gnostice'den bu bileşen kitaplığı hakkında epeyce olumlu eleştiri var.

fırsatlara göre PDF araç seti neredeyse 1'de 1 karşılık gelir PDF Oluşturma Pilotu, onlar. PDF'leri "yapıştırabilir", metni tanıyabilir, bağlantı ekleyebilir, belge arayabilir, vb. Ancak, PDF Creator Pilot'tan farklı olarak, gtPDFDocument1 ise PDFtoolkit. IsLoaded ardından gtPDFDocument1'i başlatın. MetinÇıkış ( "Merhaba, Barış!" , IntToStr (gtPDFDocument1. PageCount), // metnin ekleneceği sayfa aralığı gtPDDFDocument1. GetPageSize (gtPDFDocument1. PageCount, muPixels). Genişlik / 2, // sayfanın ortasına metin ekle gtPDDFDocument1. GetPagesize (gtPDFDocument1. PageCount, muPixels). Yükseklik / 2); (belgeyi kaydedin) gtPDDFDocument1. SaveToFile ("modified_doc.pdf"); son; sonunda gtPDDFDocument1. Ücretsiz son;

Tabii ki, benim görevimle ilgili olarak, PDFtoolkit'in pratikte işe yaramaz olduğu ortaya çıkıyor, çünkü Sıfırdan PDF oluşturmakla ilgileniyorum, ancak kendi PDF görüntüleyicilerini yazanlar için bu kütüphanenin fazlasıyla uygun olması gerektiğini düşünüyorum.

Peki, sonunda elimizde ne var. evet 5 farklı çözümler Delphi'de PDF belgeleri oluşturmak ve bunlarla çalışmak için. Her çözümün hem avantajları (ücretsiz, "süslü") hem de dezavantajları (at maliyeti, Unicode ile ilgili sorunlar vb.) vardır. Görevimle ilgili olarak, tüm çözümlerin “bir dosya ile çalışması” gerekecek. Öte yandan, tonlarca ücretli ve ücretsiz hizmetler PDF oluşturmak için, ancak bu tür hizmetlerin aniden alma ve ölme özelliğine sahip olduğunu akılda tutarak, bir şekilde onlarla iletişim kurmak gibi gelmiyor. Elbette, bir çözüm daha var - kendi kendine yazılmış ve tamamen Delphi temasında değil, ancak bir dahaki sefere bununla ilgili daha fazla, ama şimdilik DelphiFeeds istemcisiyle ne yapacağımı düşüneceğim


İnternette görüşürüz!

Fok
Konunun devamı:
Çeşitli

İyi günler sevgili Habrovitler, bu yazı mikrodalga fırının belgelenmemiş işlevleri hakkında olacak. Biraz kullanırsan ne kadar faydalı şey yapabileceğini sana göstereceğim...