Blog o vývoji softvéru

Slovenské články

Prečítajte si technické poznámky o PDF, Delphi a dokumentovom softvéri od losLab v slovenčine

Software Development Blog

Delphi HotPDF Hello World: Váš prvý PDF program

Každá knižnica PDF obsahuje príklad "hello world" a pri HotPDF sa pri ňom oplatí pristaviť, pretože aj ten najmenší program, ktorý niečo robí, si vyžaduje dve rozhodnutia, ktoré budete opakovať v…

Software Development Blog

Vytváranie polí a akcií AcroForm pomocou HotPDF v Delphi

Akcia AcroForm je slovník (dictionary) priradený k prvku (widgetu), ktorý prehliadaču hovorí, čo má urobiť, keď s daným prvkom používateľ interaguje. Kliknite na tlačidlo a prehliadač prečíta jeho…

Software Development Blog

Tvarovanie arabského a RTL textu v Delphi PDF pomocou HotPDF

Skúste odovzdať arabskú frázuيوضح ملف PDFmetódeTextOuta otvorte výsledný súbor. Písmená smerujú opačne a každé z nich stojí samostatne s viditeľnou medzerou pred ďalším, akoby niekto písal anglický…

Software Development Blog

Zvislý CJK text v PDF s Delphi a HotPDF

Otvorte japonský román na ľubovoľnej strane a prvá vec, ktorú si všimnete, je, že text beží zhora nadol v stĺpcoch, nie vodorovne v riadkoch, a že stĺpce postupujú od pravého okraja listu smerom k…

Software Development Blog

Digitálne podpisy PDF a PAdES v Delphi pomocou HotPDF

Podpis PDF je z veľkej časti o počítaní bajtov a práve v tom nastávajú chyby. Kryptografia beží na kóde, ktorý bol auditovaný dve desaťročia, a táto časť takmer nikdy nezlyhá. To, čo zlyháva v…

Software Development Blog

Chyba v EndDoc, ktorá ticho vyradila subsetting písiem

Generujte report, vložte TrueType písmo a výstup sa otvorí správne v každom prehliadači, ktorý vyskúšate. Glyfy sú správne, text sa dá vybrať, súbor je platný. Jediné, čo je nesprávne, je veľkosť.…

Software Development Blog

Štylistické alternatívy OpenType GSUB v čistom Delphi

Dizajnér vyberie písmo s jednoposchodovýmapre nadpisy, prečiarknutou nulou pre tabuľky alebo sadou ozdobných veľkých písmen (swash capitals) pre obálku. Tieto glyfy už v písme sú. Len nie sú…

Software Development Blog

Výstup PDF/A, PDF/X a PDF/UA v Delphi: Sprievodca HotPDF

PDF/A, PDF/X a PDF/UA sú tri odlišné normy riešiace tri rôzne problémy: dlhodobú archiváciu, tlačovú výmenu a prístupnosť. Nejedná sa o tri zaškrtávacie políčka na jednom formulári o zhode a…

Software Development Blog

Automatizácia kontrol PDF preflight v Delphi pomocou HotPDF

Súbor sa na vašom počítači otvorí bez problémov. Acrobat ho zobrazí správne, náhľad tlače vyzerá v poriadku a nechýba žiadna stránka. Potom sa však dostane do tlačiarne alebo archívneho systému,…

Software Development Blog

Delphi PDF reporty s HotPDF: TextOut, písma a obrázky

Generovanie reportu sa v zásade scvrkáva na umiestnenie troch vecí na stránku a zabezpečenie toho, aby sa zhodovali na svojich pozíciách: text na známych súradniciach, písma (fonty), ktoré sa…

Software Development Blog

Vykreslenie dátovej tabuľky do PDF v Delphi pomocou HotPDF

Dataset (dátová sada) pozostáva z riadkov a stĺpcov; stránka PDF je však prázdna súradnicová mriežka, ktorá nemá o riadkoch ani stĺpcoch žiadnu predstavu. Preklenutie tejto medzery je hlavnou úlohou…

Software Development Blog

Sploštenie XFA na AcroForm v Delphi pomocou HotPDF

Dva formuláre môžu obsahovať rovnaké polia, no ich správanie môže byť úplne odlišné. AcroForm uchováva svoje polia ako bežné PDF objekty umiestnené nad samotným obsahom stránky, takže ich dokáže…

Software Development Blog

Anotácie PDF v Delphi s HotPDF: Typy a obdĺžniky (rects)

Anotácia nie je obsahom stránky. Keď zavoláteTextOutalebo nakreslíte obdĺžnik, značky sa stanú súčasťou prúdu obsahu (content stream) stránky, zapísané priamo do bajtov, ktoré vykresľuje prehliadač.…

Software Development Blog

RtLTextOut v HotPDF: Text sprava doľava v PDF v Delphi

Pošlite arabskú vetuيوضح ملف PDF هذاdo obyčajnéhoTextOuta výsledná stránka bude nesprávna hneď v dvoch smeroch. Slová budú plynúť zľava doprava namiesto sprava doľava a písmená zostanú oddelené vo…

Software Development Blog

Audit bezpečnostných rizík PDF s PDFium v Delphi

PDF nie je len papier. Je to kontajner, ktorý môže niesť skripty spúšťané pri otvorení súboru, odkazy spúšťajúce externé programy, odkazy kontaktujúce webové servery, súbory vnorené do iných súborov…

Software Development Blog

Tvorba PDF prehliadača v Delphi pomocou PDFium Component

Prehliadač PDF v Delphi sa opiera o dva komponenty a ich vzájomné prepojenie.TPdfspravuje samotný dokument: otvára súbor, dešifruje ho a poskytuje informácie o počte strán a metadátach.TPdfViewje…

Software Development Blog

Tvorba prístupnej čítačky PDF v Delphi pomocou PDFium

Nevidiaci používateľ otvorí štvrťročnú správu vo vašom novom prehliadači v Delphi, zapne čítačku NVDA a počuje najprv pätu stránky, potom stĺpec s číslami a nakoniec nadpis, ktorý by každý vidiaci…

Software Development Blog

Revízia anotácií PDF v Delphi pomocou PDFium Component

Anotácia PDF je slovník pripojený k stránke, nie značka nakreslená na nej. Norma ISO 32000-1 §12.5 definuje približne dva tucty podtypov, pričom každý z nich obsahuje kľúč /Subtype, obdĺžnik v…

Software Development Blog

Prehliadač PDF pre Lazarus a Free Pascal pomocou PDFium

Delphi a Lazarus kompilujú rovnaký Object Pascal, no práve táto povrchná podobnosť robí prenos prehliadača medzi nimi zradným. Tieto dva nástroje sa rozchádzajú v troch dôležitých oblastiach pre…

Software Development Blog

Farebné filtre PDF pre slabozrakých v Delphi pomocou PDFium

Slabozraký čitateľ nedokáže prečítať čierny text na bielej stránke pri predvolenom kontraste, preto požaduje tmavý režim. Jednoduchou odpoveďou je invertovať každý pixel vykreslenej stránky. Takáto…

Software Development Blog

PDFium Delphi: Cache vykresľovania a plynulé priblíženie

Podržte tlačidlo priblíženia v jednoduchom prehliadači PDF a sledujte graf vyťaženia CPU. Jediné stlačenie ovládacieho prvku priblíženia s automatickým opakovaním vyvolá desiatku alebo viac krokov za…

Software Development Blog

Tlač PDF dokumentov pomocou PDFium Component v Delphi

Súradnice PDF sú v bodoch, súradnice tlačiarne v jednotkách zariadenia a tieto dva systémy nemajú nič spoločného, pokiaľ ich zámerne neprepočítate. Tento nesúlad je príčinou väčšiny nekvalitných…

Software Development Blog

Rozdelenie PDF dokumentov pomocou PDFium Component v Delphi

PDFium Component poskytuje jednu metódu na rozdelenie PDF:ImportPages. Všetko ostatné, či už izolujete jednu stránku, rozdeľujete na ľubovoľných hraniciach alebo nasledujete vlastnú štruktúru záložiek…

Software Development Blog

Streamovanie obrovských PDF na vyžiadanie s PDFium v Delphi

Naskenovaný archív môže mať v jedinom PDF veľkosť niekoľkých gigabajtov. Prehliadač, ktorý takýto súbor otvorí, zvyčajne chce zobraziť jednu stránku, možno obsah, možno stránku, na ktorú používateľ…

Software Development Blog

Čiarové kódy v PDF s Delphi: QR, PDF417, DataMatrix

Čiarový kód na prepravnom štítku alebo faktúre má jedinú úlohu – byť prečítaný skenerom na prvý pokus. O tom, či prežije tento pokus, sa rozhoduje dlho predtým, ako balík dorazí do prístavu.…

Software Development Blog

Audit šifrovania a oprávnení PDF v Delphi s PDFlibPas

Príznak oprávnenia nie je bezpečnostný mechanizmus. Bit, ktorý hovorí „nekopírovať“, sa nachádza v tom istom slovníku /Encrypt ako samotné šifrovanie, čo mu dodáva zdanie vynútiteľnosti, ktoré v…

Software Development Blog

GeoPDF v Delphi: Geopriestorové súradnice s PDFlibPas

Väčšina vývojárov si pod PDF stránkou predstaví list papiera s textom a obrázkami. Georeferencované PDF je však viac než to. Nesie dostatok informácií na to, aby zobralo bod na stránke, nameraný v…

Software Development Blog

Interaktívne PDF formuláre v Delphi: Akcie a JavaScript

Samotné pole PDF formulára je len políčko, ktoré obsahuje hodnotu. To, čo robí formulár podobným malej aplikácii, je k nemu pripojená akcia: kliknutie, ktoré skryje sekciu, načíta uložené hodnoty zo…

Software Development Blog

PDF vrstvy v Delphi: Voliteľné skupiny obsahu (OCG)

Geodet otvorí plán staveniska a chce, aby boli vrstevnice skryté, zatiaľ čo inžinierske siete zostanú zobrazené. Recenzent chce, aby boli červené poznámky viditeľné na obrazovke a zmizli z výtlačku.…

Software Development Blog

Preflight PDF/A a PDF/UA v Delphi pomocou PDFlibPas

PDF/A a PDF/UA odpovedajú na dve otázky, ktoré spolu vôbec nesúvisia. Ak ich však vnímate ako jediné zaškrtávacie políčko pre prístupnosť a archiváciu, do archívu sa ľahko dostanú poškodené súbory s…

Software Development Blog

Náhľad tlače a výstup do kontextu zariadenia v Delphi

Vykreslenie PDF stránky do Windows kontextu zariadenia (device context) pre náhľad tlače spája tri súradnicové systémy v rovnakom riadku kódu, ktoré sa však málokedy zhodujú. PDF stránka sa meria v…

Software Development Blog

Vektorová grafika v PDF s Delphi: Cesty a prechody

Väčšina kódu v Delphi, ktorý pracuje s PDF, zaobchádza s týmto formátom ako s kontajnerom pre dve veci: bloky textu a niekoľko umiestnených bitmáp. Tento pohľad je síce správny, ale najschopnejšiu…

Software Development Blog

Zápis kontingenčných tabuliek BIFF8 v Delphi: SXDB a SXLI

Takmer každá časť staršieho binárneho formátu Excelu je samostatný záznam s čistým dvojbajtovým typom a dvojbajtovou dĺžkou. Bunka jeLABELSSTaleboNUMBER. Zlúčená oblasť jeMERGEDCELLS. Väčšinu…

Software Development Blog

Grafy, obrázky a kreslené objekty HotXLS v Delphi

Čokoľvek, čo sa vznáša nad mriežkou pracovného hárka (graf, logo, pečiatka, textová bublina), je kreslený objekt. Kreslený objekt je definovaný dvoma vecami: tým, čím je, a tým, kde je ukotvený.…

Software Development Blog

Výpočtový engine HotXLS a vlastné funkcie v Delphi

Knižnica pre prácu s tabuľkami, ktorá ukladá iba reťazce vzorcov, a knižnica s funkčným výpočtovým enginom sú dva odlišné produkty, ktoré vyzerajú identicky až do momentu, kým od jedného z nich…

Software Development Blog

Výkon veľkých zošitov Excelu v Delphi pomocou HotXLS

Keď export s 300 000 riadkami prekročí pamäťový limit, zvyčajne sa obviňuje počet riadkov. Ten je však väčšinou nevinný. Skutočne náročnými časťami veľkého zošita sú tie, ktoré vznikajú ako vedľajší…

Software Development Blog

Otváranie a ukladanie tabuliek ODS v Delphi pomocou HotXLS

Reportovací backend v Delphi, ktorý roky generoval súbory .xlsx, získava novú požiadavku: pravidlá verejného obstarávania u zákazníka z verejného sektora vyžadujú výstup vo formáte OpenDocument…

Software Development Blog

Prečo Excel odmieta váš šifrovaný zošit: ECB a RC4

Napíšete zošit, zašifrujete ho heslom, odovzdáte súbor kolegovi a kolega ho otvorí v Exceli. Excel si vypýta heslo. Kolega ho zadá a Excel ho prijme. Zatiaľ šifrovanie vyzerá správne. Potom však…

Software Development Blog

HotXLS: Ochrana hárkov, nastavenie stránky a tlač v Delphi

Tri skupiny nastavení pracovného hárka nemajú nič spoločné s hodnotami buniek, no ovplyvňujú všetko ohľadom správania súboru po opustení vášho kódu. Ochrana hárka určuje, ktoré bunky môže používateľ…

Software Development Blog

Štatistické funkcie Excelu v Delphi: NORM, CHISQ, BETA

Zapíšte=NORM.DIST(115,100,15,TRUE)do bunky a Excel bez rečí vráti 0.8413447. Volanie vyzerá ako jednoduché vyhľadanie. Nie je to tak. Za týmto jediným číslom je kumulatívne normálne rozdelenie,…

Software Development Blog

Export tabuliek bezpečný pre Unicode v Delphi: RTF a HTML

Tabuľka obsahuje stĺpec mien zákazníkov. Niektoré sú v čínštine, niektoré v azbuke, niekoľko ich obsahuje nemecké prehlásky alebo francúzsky dĺžeň. Exportujete ju do CSV, otvoríte výsledok a každý…

Software Development Blog

PDF bez slovníka Pages: Dôsledky pre parsovanie

Slovník PDF Catalog (katalóg) obsahuje presne jeden povinný navigačný kľúč:/Pages. Tento kľúč musí odkazovať na nepriamy objekt typu/Pages, ktorý zasa obsahuje pole/Kidsa celkový počet strán/Count.…

Software Development Blog

Štruktúra PDF: Metadáta XML, záložky a anotácie

Ak odstránime popisy stránok, zostane nám tenká vrstva štruktúry, ktorú síce nikto netlačí, no závisí od nej každá čítačka, indexátor aj archivačný systém. Samotný objekt stránky nevie nič o…

Software Development Blog

Linearizácia PDF a Fast Web View: Ako to funguje

Dajte 80 MB naskenovaný report za odkaz, otvorte ho v prehliadači a sledujte, čo sa stane: prehliadač zobrazuje prázdne okno, kým nedorazí veľká časť týchto bajtov, a potom naraz vykreslí prvú…

Software Development Blog

Ako funguje grafika v PDF: Obsahové prúdy a operátory

Stránka PDF neukladá pixely a neukladá ani strom tvarových objektov ako formát SVG. Ukladá program. Každá čiara, krivka, výplň a umiestnený obrázok na stránke sú výsledkom vykonania sekvencie…

Software Development Blog

PDF písma a text: Prečo sa glyfy menia na štvorčeky

PDF súbor, ktorý na vašom počítači vyzerá perfektne, no na inom stroji sa zobrazí ako rad prázdnych štvorčekov, je najčastejšou chybou písiem v softvéri na prácu s dokumentmi. Takmer nikdy to však…

Software Development Blog

Štruktúra súboru PDF: Hlavička, telo, xref a trailer

Prehliadač PDF nezačína čítať súbor od začiatku. Začína od konca. Posledných niekoľko bajtov obsahuje adresu všetkého ostatného a parser, ktorý tomuto poradiu nerozumie, nesprávne interpretuje formát…

Software Development Blog

Formát TDateTimePicker v Delphi 5: DateTime_SetFormat

TDateTimePickerzískal vlastnosťFormatniekde medzi Delphi 5 a Delphi 6. Presná hranica verzie je málokedy zdokumentovaná dôveryhodným spôsobom, a keď na ňu narazíte, kompilátor vám jednoducho oznámi,…

Software Development Blog

DigiSigner: Recenzia služby elektronického podpisu PDF

Online služby na podpisovanie riešia konkrétny logistický problém: získaním podpisu na dokument, keď podpisovateľ nemá softuér PDF, čas na tlač a ani fax. DigiSigner patrí do tejto kategórie.…

Software Development Blog

Automatizovaný preflight PDF a audit rizík pomocou PDFium

V podnikových systémoch na správu dokumentov (DMS) môže povolenie prichádzajúcim súborom PDF pochádzajúcim od tretích strán, aby sa priamo dostali do vašich archívov na ukladanie, predstavovať značné…

Software Development Blog

Výkon extrakcie stránok HotPDF v Delphi

Dve minúty na skopírovanie troch stránok z 40-stránkového PDF nie je problém ladenia výkonu. Je to signál, že sa používa nesprávna cesta API. Keď som toto meranie prvykrát videl na ukrážke…

Software Development Blog

Konverzia RTF do PDF v Delphi s knižnicou losLab PDF

RTF existuje dostatočne dlho, aby sa objavil na miestach, ktoré nikto neplánoval: staré generátory zostáv, kanály hromadného odosielania, archívy právnych dokumentov, ktoré predchádzajú moderným…