Hvert PDF-bibliotek leveres med et "hello world", og HotPDF sitt er verdt å stoppe opp ved, fordi det minste programmet som gjør noe som helst, allerede tvinger frem to beslutninger du vil gjenta i hvert dokument etterpå: hvilken skrifttype du skal sette, og hvor på siden teksten lander. Gjør du disse to riktig, er resten av API-et variasjoner over et tema. Her er hele greia, et konsollprogram som skriver en enkelt side som hilser leseren på nesten et dusin språk:
program HelloWorld;
{$APPTYPE CONSOLE}
uses
Winapi.Windows, // for DEFAULT_CHARSET; on pre-XE2 Delphi use plain Windows
HPDFDoc; // HotPDF main unit
procedure CreateHelloWorld(const FileName: string);
var
Pdf: THotPDF;
begin
Pdf := THotPDF.Create(nil);
try
Pdf.FileName := FileName;
Pdf.Compression := cmFlateDecode; // shrink the content streams
Pdf.FontEmbedding := True; // embed the face so it renders anywhere
Pdf.BeginDoc;
// One face covering many scripts. The 4th argument is the Windows charset;
// DEFAULT_CHARSET lets the system pick glyphs per string.
Pdf.CurrentPage.SetFont('Arial Unicode MS', [], 14, DEFAULT_CHARSET);
// TextOut measures from the BOTTOM-LEFT corner, in points, Y growing upward.
Pdf.CurrentPage.TextOut(72, 760, 0, 'Hello, Delphi PDF world!'); // English
Pdf.CurrentPage.TextOut(72, 730, 0, 'Hola, mundo Delphi PDF!'); // Spanish
Pdf.CurrentPage.TextOut(72, 700, 0, 'Hallo, Delphi PDF Welt!'); // German
Pdf.CurrentPage.TextOut(72, 670, 0, 'Bonjour, monde PDF Delphi!'); // French
Pdf.CurrentPage.TextOut(72, 640, 0, 'Ciao, mondo Delphi PDF!'); // Italian
Pdf.CurrentPage.TextOut(72, 610, 0, 'Olá, mundo Delphi PDF!'); // Portuguese
Pdf.CurrentPage.TextOut(72, 580, 0, 'Здравствуйте, Delphi PDF мир!'); // Russian
Pdf.CurrentPage.TextOut(72, 550, 0, 'こんにちは、Delphi PDFの世界!'); // Japanese
Pdf.CurrentPage.TextOut(72, 520, 0, 'Merhaba, Delphi PDF dünyası!'); // Turkish
Pdf.CurrentPage.TextOut(72, 490, 0, '你好,Delphi PDF世界'); // Chinese
Pdf.CurrentPage.TextOut(72, 460, 0, '여보세요, Delphi PDF 세계!'); // Korean
Pdf.EndDoc;
finally
Pdf.Free;
end;
end;
begin
CreateHelloWorld('HelloWorld.pdf');
Writeln('Wrote HelloWorld.pdf');
end.

Det er hele eksemplet. THotPDF.Create(nil) parret med try/finally ... Free er det vanlige eierskapsmønsteret i Delphi, og PDF endrer ikke på dette. Det som fortjener oppmerksomhet, er den fire-trinns ryggraden på innsiden: angi egenskaper, BeginDoc, tegn, EndDoc. Rekkefølgen kan ikke byttes om
Angi dokumentegenskaper før BeginDoc
BeginDoc er øyeblikket HotPDF forplikter seg til dokumentets struktur, så alt som påvirker hele filen må settes før det. Compression := cmFlateDecode slår på FlateDecode for innholdsstrømmene, noe som er forskjellen på en kompakt fil og en unødvendig oppblåst en. FontEmbedding := True pakker skrifttypen du tegner med inn i filen, slik at den ser lik ut på en maskin som aldri har hatt Arial Unicode MS installert som den gjør på din. Tildeler du noen av dem etter BeginDoc, gjør den stille ingenting med dokumentet som allerede er i gang, uten noen feilmelding for å advare deg
SetFont, deretter TextOut, og pass på origo
To ting med tegnekallene fanger alle på deres første side. Det første er rekkefølgen: SetFont må kjøres før noe TextOut som avhenger av det, og det må gjentas etter hver AddPage, fordi den gjeldende skrifttypen ikke overlever et sideskift. Det andre er koordinatsystemet. TextOut måler fra nederste venstre hjørne av siden, ikke øverste venstre, hvor Y øker når du beveger deg oppover, i punkter (1/72 tomme). Det er grunnen til at linjene her marsjerer nedover fra 760, hver og en 30 punkter under den forrige. Alle som kommer fra skjermgrafikk antar det motsatte, og skriver den første linjen rett ut av den nederste kanten
Én skrifttype, mange skriftspråk
Grunnen til at én enkelt SetFont kan bære latin, kyrillisk, japansk og kinesisk på samme side er selve skriftsnittet: Arial Unicode MS samler glyffer for nesten hvert skriftspråk i én fil. Det fjerde argumentet til SetFont er Windows-tegnsettet, og å sende DEFAULT_CHARSET lar systemet velge glyffer per streng i stedet for å låse alt til en foreldet kodeside. To forbehold følger med denne bekvemmeligheten. Skrifttypen må være til stede på maskinen som bygger PDF-en, fordi HotPDF bygger inn det operativsystemet løser navnet til; hvis Arial Unicode MS mangler, bytter Windows den stille ut med en erstatning, og din CJK-tekst kan ende opp som tomme bokser. Og den dekker ikke hvert skriftspråk like godt: for skriving fra høyre til venstre, som arabisk og hebraisk, eller noe som krever kompleks forming, velger du en dedikert skrifttype lastet med RegisterUnicodeTTF og tekstkallene for høyre-til-venstre, noe som er et tema for seg selv
Kjør det, og du får HelloWorld.pdf i arbeidskatalogen: én side, noen få linjer med flerspråklig tekst, komprimert, med skrifttypen innebygd. De åpenbare neste trinnene er å gi den teksten størrelse, stil og rotasjon, og å plassere mer enn én blokk av den bevisst, noe begge deler gås gjennom i TextOut-eksemplet. Når du vil tegne streker, bokser og bilder i stedet for bare tekst, inneholder det samme sideobjektet disse kallene også
TextOut-, SetFont- og dokumentkallene som vises her, er en del av HotPDF Component for Delphi og C++Builder