Ð ÑвоÑÑа ÑÑÑноÑÑ PDF е ÑекÑÑов конÑÐµÐ¹Ð½ÐµÑ Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½ ÑекÑÑ. ÐÑвоÑеÑе повеÑеÑо Ñайлове в ÑеÑÑнадеÑеÑиÑен (hex) ÑедакÑÐ¾Ñ Ð¸ гоÑнаÑа ÑаÑÑ Ñе бÑде ÑеÑлива: коменÑÐ°Ñ Ð·Ð° веÑÑиÑÑа, Ñлед Ñова поÑедиÑа Ð¾Ñ Ð½Ð¾Ð¼ÐµÑиÑани обекÑи, Ñлед Ñова малÑк Ð¸Ð½Ð´ÐµÐºÑ Ð¸ ÑказаÑел най-оÑдолÑ, койÑо казва на ÑеÑеÑа оÑкÑде да запоÑне. ÐÑÐµÐ¼Ð°Ñ Ð½ÐµÑе компÑеÑиÑÑа и ÑоÑмаÑÑÑ ÑÑава доÑÑаÑÑÑно доÑÑÑпен, за да можеÑе да вÑведеÑе ÑабоÑÐµÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð² ÑекÑÑов ÑедакÑÐ¾Ñ Ð¸ пÑогÑама за пÑеглед да го оÑвоÑи. Ðко напÑавиÑе Ñова веднÑж, Ñе наÑÑиÑе повеÑе за Ñова как Ñе ÑглобÑва PDF, оÑколкоÑо Ð¾Ñ Ð²ÑÑко ÑеÑене на ÑпеÑиÑикаÑиÑÑа, заÑоÑо ÑÑÑбва да ÑвÑÑжеÑе обекÑиÑе един Ñ Ð´ÑÑг на ÑÑка и ÑайлÑÑ Ð¾Ñказва да Ñе оÑвоÑи, докаÑо не напÑавиÑе ÑвÑÑзванеÑо пÑавилно.
Това ÑÑководÑÑво изгÑажда най-Ð¼Ð°Ð»ÐºÐ¸Ñ PDF Ñайл, койÑо дейÑÑвиÑелно изобÑазÑва неÑо: една ÑÑÑаниÑа Ñ Ð´ÑмиÑе âHello, World!â?Ñ Ð²Ð³Ñаден ÑÑиÑÑ Ð²ÑÑÑ Ñ Ñ Ð°ÑÑÐ¸Ñ Ñ ÑÐ°Ð·Ð¼ÐµÑ US Letter. ÐоÑовиÑÑ Ñайл Ñе нÑждае Ð¾Ñ ÑоÑно Ð¿ÐµÑ Ð¾Ð±ÐµÐºÑа и нÑколко Ñеда админиÑÑÑаÑÐ¸Ñ Ð¾ÐºÐ¾Ð»Ð¾ ÑÑÑ . ÐÑÑво Ñе напиÑем обекÑиÑе, Ñлед коеÑо Ñе Ñглобим заглавнаÑа ÑаÑÑ (header), ÑаблиÑаÑа Ñ ÐºÑÑÑÑоÑани пÑепÑаÑки (xref table) и завÑÑÑваÑаÑа ÑаÑÑ (trailer), коиÑо ги ÑвÑÑÐ·Ð²Ð°Ñ Ð²Ñв Ñайл, койÑо ÑеÑеÑÑÑ Ñе пÑиеме.
ÐеÑÑе обекÑа, за коиÑо ÑеÑеÑÑÑ Ð½Ð°ÑÑоÑва
ЧеÑеÑÑÑ Ð½Ðµ ÑканиÑа PDF Ñайл оÑгоÑе Ð½Ð°Ð´Ð¾Ð»Ñ Ð² ÑÑÑÑене на ÑÑдÑÑжание. Той запоÑва Ð¾Ñ Ð·Ð°Ð²ÑÑÑваÑаÑа ÑаÑÑ (trailer), Ñледва пÑепÑаÑка кÑм каÑалога на докÑменÑа (Catalog) и оÑÑам Ð¾Ð±Ñ Ð¾Ð¶Ð´Ð° веÑига Ð¾Ñ Ð¾Ð±ÐµÐºÑи. ÐÑеки Ð¾Ð±ÐµÐºÑ Ð² Ñази веÑига ÑÑÑбва да ÑÑÑеÑÑвÑва, инаÑе оÑваÑÑнеÑо Ñе пÑовалÑ. Ðа докÑÐ¼ÐµÐ½Ñ Ð¾Ñ ÐµÐ´Ð½Ð° ÑÑÑаниÑа веÑигаÑа е кÑÑа и вÑÑка вÑÑзка има една единÑÑвена задаÑа:
- Catalog е коÑенÑÑ. Това е обекÑÑÑ, кÑм койÑо ÑоÑи trailer, и единÑÑвениÑÑ Ð¼Ñ Ð·Ð°Ð´ÑлжиÑелен Ð·Ð°Ð¿Ð¸Ñ ÑÑк е пÑепÑаÑка кÑм дÑÑвоÑо на ÑÑÑаниÑиÑе.
- Pages е вÑзелÑÑ Ð½Ð° дÑÑвоÑо на ÑÑÑаниÑиÑе. Той избÑоÑва ÑÑÑаниÑиÑе в докÑменÑа и ÑÑобÑава колко Ñа Ñе.
- Page опиÑва една ÑизиÑеÑка ÑÑÑаниÑа: Ð½ÐµÐ¹Ð½Ð¸Ñ ÑазмеÑ, ÑеÑÑÑÑиÑе, Ñ ÐºÐ¾Ð¸Ñо ÑеÑÑае, и кой поÑок Ð¾Ñ ÑÑдÑÑжание (content stream) Ñ Ð¸Ð·Ð¾Ð±ÑазÑва.
- Content stream (поÑок Ð¾Ñ ÑÑдÑÑжание) ÑÑдÑÑжа ÑеÑÑожниÑе опеÑаÑоÑи â?поÑÑÑикÑниÑе команди, коиÑо ÑÐ°Ð·Ð¿Ð¾Ð»Ð°Ð³Ð°Ñ ÑекÑÑ Ð¸ гÑаÑики на Ñази ÑÑÑаниÑа.
- Font (ÑÑиÑÑ) деклаÑиÑа ÑÑиÑÑа, кÑм койÑо Ñе оÑнаÑÑ Ð¿Ð¾ÑокÑÑ Ð¾Ñ ÑÑдÑÑжание. ÐзползвайÑе един Ð¾Ñ 14-Ñе ÑÑандаÑÑни ÑÑиÑÑа и нÑма да ви Ñе налага да вгÑаждаÑе ниÑо.
ÐепÑÑк Ð¾Ð±ÐµÐºÑ Ñе запиÑва каÑо N 0 obj ... endobj, кÑдеÑо N е номеÑÑÑ Ð½Ð° обекÑа, а 0 е неговиÑÑ Ð½Ð¾Ð¼ÐµÑ Ð½Ð° генеÑиÑане (винаги 0 вÑв Ñайл, койÑо пиÑеÑе наново). Ðа вÑÑко дÑÑго мÑÑÑо вÑв Ñайла вие ÑоÑиÑе кÑм Ñози Ð¾Ð±ÐµÐºÑ Ñ Ð¿ÑепÑаÑка: 5 0 R ознаÑава âобекÑ?5â? Тези пÑепÑаÑки Ñа ÑвÑÑзванеÑо. ÐаÑалогÑÑ ÑÑдÑÑжа 2 0 R в наÑаÑа номеÑаÑиÑ, за да ÑÑигне до дÑÑвоÑо на ÑÑÑаниÑиÑе, дÑÑвоÑо на ÑÑÑаниÑиÑе ÑÑдÑÑжа пÑепÑаÑка обÑаÑно Ð½Ð°Ð´Ð¾Ð»Ñ ÐºÑм ÑÑÑаниÑаÑа и Ñ.н. СгÑеÑеÑе нÑкой Ð½Ð¾Ð¼ÐµÑ Ð¸ ÑеÑеÑÑÑ Ñе поÑледва виÑÑÑ ÑказаÑел кÑм ниÑоÑо.
Ðмена, ÑеÑниÑи и поÑоÑи
ТÑи елеменÑа Ð¾Ñ ÑинÑакÑиÑа ноÑÑÑ Ð¿Ð¾ÑÑи вÑиÑко. Ðдно име (name) запоÑва Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° ÑеÑÑа: /Type, /Page, /F0. ÐменаÑа Ñа ÑÑвÑÑвиÑелни кÑм ÑегиÑÑÑÑа на бÑквиÑе иденÑиÑикаÑоÑи, а не низове, и PDF ги използва за клÑÑове в ÑеÑниÑи и за обознаÑаване на вида на обекÑа. Ðдин ÑеÑник (dictionary) е Ð½Ð°Ð±Ð¾Ñ Ð¾Ñ Ð´Ð²Ð¾Ð¹ÐºÐ¸ клÑÑ-ÑÑойноÑÑ, обвиÑи в двойни Ñглови Ñкоби, кÑдеÑо вÑеки клÑÑ Ðµ име: << /Type /Page /MediaBox [0 0 612 792] >>. СÑойноÑÑиÑе Ð¼Ð¾Ð³Ð°Ñ Ð´Ð° бÑÐ´Ð°Ñ ÑиÑла, имена, маÑиви в квадÑаÑни Ñкоби, пÑепÑаÑки или вложени ÑеÑниÑи. ÐовеÑеÑо PDF обекÑи Ñа ÑеÑниÑи.
Ðдин поÑок (stream) е ÑеÑник, поÑледван Ð¾Ñ Ð±Ð»Ð¾Ðº Ð¾Ñ Ð±Ð°Ð¹Ñове Ð¼ÐµÐ¶Ð´Ñ ÐºÐ»ÑÑовиÑе дÑми stream и endstream. Там живеÑÑ Ð¾Ð¿ÐµÑаÑоÑиÑе за изÑеÑÑаване на ÑÑÑаниÑи, а в ÑеалниÑе Ñайлове â?ÑÑÑо и компÑеÑиÑаниÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ вгÑадениÑе ÑÑиÑÑове. РеÑникÑÑ Ð½Ð° поÑока опиÑва байÑовеÑе; в пÑоизводÑÑвен Ñайл Ñой ÑÑÑбва да ÑÑдÑÑжа Ð·Ð°Ð¿Ð¸Ñ /Length, Ð´Ð°Ð²Ð°Ñ ÑоÑÐ½Ð¸Ñ Ð±Ñой байÑове, и ÑеÑÑо /Filter каÑо /FlateDecode, когаÑо данниÑе Ñа компÑеÑиÑани. Ще Ñе довеÑим на инÑÑÑÑменÑ, койÑо да попÑлни /Length, заÑоÑо бÑоенеÑо на байÑове на ÑÑка е ÑаÑÑÑа Ð¾Ñ Ñова ÑпÑажнение без обÑазоваÑелна ÑÑойноÑÑ Ð¸ Ñ Ð³Ð¾Ð»Ñм ÑÐ°Ð½Ñ Ð·Ð° гÑеÑка Ñ ÐµÐ´Ð¸Ð½Ð¸Ñа, коÑÑо да ÑÑÑпи Ñайла.
ÐиÑане на обекÑиÑе
ÐÑо ги пеÑÑе обекÑа подÑед. ÐодÑобноÑÑ Ð·Ð° кооÑдинаÑиÑе, коÑÑо ÑÑÑбва да имаÑе пÑедвид, пÑеди да пÑоÑеÑеÑе поÑока Ð¾Ñ ÑÑдÑÑжание: PDF измеÑва Ð¾Ñ Ð´Ð¾Ð»Ð½Ð¸Ñ Ð»Ñв ÑгÑл на ÑÑÑаниÑаÑа в ÑоÑки, кÑдеÑо една ÑоÑка е 1/72 Ð¾Ñ Ð¸Ð½Ñа, а Y ÑаÑÑе нагоÑе. СÑÑаниÑа Ñ ÑÐ°Ð·Ð¼ÐµÑ US Letter е 612 на 792 ÑоÑки, Ñака Ñе 50 700 Ñе намиÑа близо до гоÑÐ½Ð¸Ñ Ð»Ñв ÑгÑл, а не до долниÑ.
1 0 obj
<< /Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<< /Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<< /Type /Page
/Parent 2 0 R
/MediaBox [0 0 612 792]
/Resources << /Font << /F0 4 0 R >> >>
/Contents 5 0 R
>>
endobj
4 0 obj
<< /Type /Font
/Subtype /Type1
/BaseFont /Helvetica
>>
endobj
5 0 obj
<< /Length 44 >>
stream
BT
/F0 36 Tf
50 700 Td
(Hello, World!) Tj
ET
endstream
endobj
ÐÑоÑеÑеÑе пÑепÑаÑкиÑе и ÑÑÑÑкÑÑÑаÑа Ñе Ñе изÑÑни. ÐÐ±ÐµÐºÑ 1, каÑалогÑÑ, наÑоÑва ÑÐ²Ð¾Ñ Ð·Ð°Ð¿Ð¸Ñ /Pages entry кÑм Ð¾Ð±ÐµÐºÑ 2. ÐÐ±ÐµÐºÑ 2, дÑÑвоÑо на ÑÑÑаниÑиÑе, избÑоÑва Ð¾Ð±ÐµÐºÑ 3 в /Kids и деклаÑиÑа /Count 1. ÐÐ±ÐµÐºÑ 3, ÑÑÑаниÑаÑа, ÑоÑи Ñ /Parent обÑаÑно кÑм Ð¾Ð±ÐµÐºÑ 2 (дÑÑвоÑо и ÑÑÑаниÑаÑа Ñе ÑеÑеÑиÑÐ°Ñ Ð²Ð·Ð°Ð¸Ð¼Ð½Ð¾, коеÑо е задÑлжиÑелно), оÑазмеÑÑва Ñе Ñ /MediaBox, излага ÑÑиÑÑа под локалноÑо име /F0 в ÑвоиÑе /Resources и поÑоÑва Ð¾Ð±ÐµÐºÑ 5 каÑо Ñвое ÑÑдÑÑжание. ÐÐ±ÐµÐºÑ 4 е ÑÑиÑÑÑÑ: /BaseFont /Helvetica избиÑа един Ð¾Ñ 14-Ñе ÑÑандаÑÑни ÑÑиÑÑа, коиÑо вÑеки ÑÑвмеÑÑим ÑеÑÐµÑ Ð²ÐµÑе има, Ñака Ñе нÑма какво да Ñе вгÑажда. ÐÐ±ÐµÐºÑ 5 е поÑокÑÑ Ð¾Ñ ÑÑдÑÑжание.
Ðакво вÑÑÑноÑÑ ÐºÐ°Ð·Ð²Ð° поÑокÑÑ Ð¾Ñ ÑÑдÑÑжание
ТÑлоÑо на поÑока е малка пÑогÑама на езика за опиÑание на ÑÑÑаниÑи на PDF, койÑо е поÑÑÑикÑен: опеÑандиÑе Ð¸Ð´Ð²Ð°Ñ Ð¿ÑÑви, поÑледвани Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑа, койÑо ги конÑÑмиÑа. ÐÐµÑ Ñеда вÑÑÑÐ°Ñ ÑабоÑаÑа. BT и ET оÑваÑÑÑ Ð¸ заÑваÑÑÑ ÑекÑÑов обекÑ; вÑиÑко, коеÑо позиÑиониÑа или показва ÑекÑÑ, ÑÑÑбва да ÑÑои Ð¼ÐµÐ¶Ð´Ñ ÑÑÑ
. /F0 36 Tf задава ÑекÑÑÐ¸Ñ ÑÑиÑÑ Ð½Ð° ÑеÑÑÑÑа Ñ Ð¸Ð¼Ðµ /F0 на 36 ÑоÑки (Tf ознаÑава âзадаванÐ?на ÑекÑÑов ÑÑиÑÑ Ð¸ ÑазмеÑâ?. 50 700 Td пÑемеÑÑва ÑекÑÑоваÑа позиÑÐ¸Ñ Ð½Ð° (50, 700) в кооÑдинаÑиÑе на ÑÑÑаниÑаÑа. (Hello, World!) Tj показва низа, койÑо PDF запиÑва каÑо бÑквален ÑекÑÑ Ð² Ñкоби, използвайки Tj, за да го изÑиÑÑва на ÑекÑÑаÑа позиÑиÑ. ÐÑопÑÑнеÑе BT/ET и ÑÑÑогиÑÑ ÑеÑÐµÑ Ñе оÑÑ
вÑÑли ÑекÑÑовиÑе опеÑаÑоÑи; забÑавеÑе да зададеÑе ÑÑиÑÑ Ð¿Ñеди Tj и нÑма да има ÑекÑÑ ÑÑиÑÑ, Ñ ÐºÐ¾Ð¹Ñо да Ñе ÑиÑÑва.
СÑойноÑÑÑа /Length 44 в ÑеÑника на поÑока е бÑоÑÑ Ð½Ð° байÑовеÑе Ð¼ÐµÐ¶Ð´Ñ stream и endstream и ÑÑÑбва да бÑде ÑоÑен. Това е ÑÑойноÑÑÑа, коÑÑо Ñи ÑÑÑÑва да Ñе оÑÑави на инÑÑÑÑменÑ, вмеÑÑо да Ñе бÑоÑÑ Ð½Ð¾Ð²Ð¸Ñе Ñедове на ÑÑка, оÑобено Ñлед каÑо Ñова дали ваÑиÑÑ ÑедакÑÐ¾Ñ Ð·Ð°Ð¿Ð¸Ñва кÑаиÑаÑа на ÑедовеÑе каÑо LF или CRLF пÑÐ¾Ð¼ÐµÐ½Ñ Ð¾Ð±ÑÐ¸Ñ Ð±Ñой.
Ðаглавна ÑаÑÑ, xref и trailer
ÐбекÑиÑе Ñа ÑÑдÑÑжаниеÑо. ТÑи ÑÑÑÑкÑÑÑни елеменÑа ги пÑевÑÑÑÐ°Ñ Ð²Ñв Ñайл. ÐÑÑвиÑÑ Ðµ заглавнаÑа ÑаÑÑ (header), пÑÑвиÑÑ Ñед, ÑÐºÐ°Ð·Ð²Ð°Ñ ÑоÑмаÑа и веÑÑиÑÑа:
%PDF-1.7
СимволÑÑ % запоÑва коменÑÐ°Ñ Ð² ÑинÑакÑиÑа на PDF, но ÑеÑеÑÑÑ ÑÑеÑиÑа Ñози конкÑеÑен коменÑÐ°Ñ ÐºÐ°Ñо ÑигнаÑÑÑа на ÑоÑмаÑа и ÑеÑе веÑÑиÑÑа Ð¾Ñ Ð½ÐµÐ³Ð¾. ÐÑÑинÑкаÑа пÑогÑама за Ð·Ð°Ð¿Ð¸Ñ Ð³Ð¾ Ñледва веднага Ñ Ð²ÑоÑи коменÑаÑен Ñед Ð¾Ñ Ð±Ð°Ð¹Ñове Ñ Ð²Ð¸Ñок Ð±Ð¸Ñ â?намек за инÑÑÑÑменÑиÑе за ÑÑанÑÑÐµÑ Ð½Ð° Ñайлове, Ñе ÑайлÑÑ Ðµ двоиÑен и не ÑÑÑбва да бÑде пÑоменÑн каÑо обикновен ÑекÑÑ.
РкÑÐ°Ñ Ð½Ð° Ñайла Ñе намиÑа ÑаблиÑаÑа Ñ ÐºÑÑÑÑоÑани пÑепÑаÑки (cross-reference table), индекÑÑÑ, койÑо пÑави вÑзможен пÑÐ¾Ð¸Ð·Ð²Ð¾Ð»Ð½Ð¸Ñ Ð´Ð¾ÑÑÑп. Ð¢Ñ Ð·Ð°Ð¿Ð¸Ñва байÑовоÑо оÑмеÑÑване (offset) на вÑеки Ð¾Ð±ÐµÐºÑ Ð¾Ñ Ð½Ð°ÑалоÑо на Ñайла, Ñака Ñе ÑеÑеÑÑÑ Ð¼Ð¾Ð¶Ðµ да оÑиде диÑекÑно до Ð¾Ð±ÐµÐºÑ 3, без да анализиÑа пÑÑво обекÑи 1 и 2. ТаблиÑаÑа е ÑвÑÑда: запиÑиÑе Ñа Ñ ÑикÑиÑана ÑиÑина, по 20 байÑа вÑеки, вклÑÑиÑелно кÑÐ°Ñ Ð½Ð° Ñеда, ÑоÑмаÑиÑани каÑо 10-ÑиÑÑено оÑмеÑÑване, 5-ÑиÑÑено поколение, клÑÑова дÑма (n за използвани, f за Ñвободни) и двÑбайÑов ÑеÑминаÑоÑ. ÐÑавилна ÑаблиÑа за наÑиÑе ÑеÑÑ Ð·Ð°Ð¿Ð¸Ñа (Ð¾Ð±ÐµÐºÑ 0 винаги е наÑалоÑо на ÑпиÑÑка ÑÑÑ Ñвободни обекÑи) изглежда Ñака:
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000235 00000 n
0000000308 00000 n
trailer
<< /Size 6
/Root 1 0 R
>>
startxref
408
%%EOF
Тези оÑмеÑÑÐ²Ð°Ð½Ð¸Ñ Ñа кÑеÑ
каÑа ÑаÑÑ Ð¾Ñ Ð¿Ð¸ÑанеÑо на PDF на ÑÑка. ÐÑÑко едно Ð¾Ñ ÑÑÑ
е ÑоÑнаÑа байÑова позиÑиÑ, Ð¾Ñ ÐºÐ¾ÑÑо запоÑва ÑÑоÑвеÑниÑÑ N 0 obj, и вÑÑко оÑмеÑÑване Ñе пÑÐ¾Ð¼ÐµÐ½Ñ Ð² моменÑа, в койÑо добавиÑе Ñимвол нÑкÑде по-нагоÑе. ÐавÑÑÑваÑаÑа ÑаÑÑ (trailer) е вÑ
однаÑа ÑоÑка, коÑÑо ÑеÑеÑÑÑ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° поÑледна и пÑÑва: /Root 1 0 R Ñказва каÑалога, /Size 6 поÑоÑва бÑÐ¾Ñ Ð½Ð° обекÑиÑе, а startxref 408 дава байÑовоÑо оÑмеÑÑване на ÑамаÑа дÑма xref. ЧеÑеÑÑÑ Ð¾ÑваÑÑ Ñайла, ÑкаÑа до кÑаÑ, пÑоÑиÑа startxref, ÑÑÑÑи ÑаблиÑаÑа Ñ ÐºÑÑÑÑоÑани пÑепÑаÑки и оÑÑам доÑÑига до каÑалога и вÑиÑко под него. %%EOF маÑкиÑа поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð±Ð°Ð¹Ñ.
ÐÑÑавеÑе инÑÑÑÑÐ¼ÐµÐ½Ñ Ð´Ð° коÑигиÑа бÑÐ¾Ñ Ð½Ð° байÑовеÑе
ÐÑмеÑÑваниÑÑа по-гоÑе Ñа илÑÑÑÑаÑивни; на пÑакÑика Ñе Ñе бÑÐ´Ð°Ñ Ð³ÑеÑни до моменÑа, в койÑо пÑиклÑÑиÑе Ñ Ð¿Ð¸ÑанеÑо, ÑÑй каÑо завиÑÑÑ Ð¾Ñ ÑоÑнаÑа байÑова подÑедба на ваÑÐ¸Ñ Ñайл. ÐмеÑÑо да ги пÑеизÑиÑлÑваÑе, напиÑеÑе ÑÑÑÑкÑÑÑаÑа Ñ Ð²Ñеменни ÑÑойноÑÑи и оÑÑавеÑе инÑÑÑÑÐ¼ÐµÐ½Ñ Ð´Ð° изгÑади оÑново ÑаблиÑаÑа Ñ ÐºÑÑÑÑоÑани пÑепÑаÑки и дÑлжиниÑе на поÑоÑиÑе. ÐезплаÑниÑÑ, мÑлÑиплаÑÑоÑмен pdftk пÑави Ñова Ñ ÐµÐ´Ð½Ð¾ пÑеминаване:
pdftk hello-draft.pdf output hello.pdf
Той анализиÑа ваÑиÑе обекÑи, пÑеизÑиÑлÑва вÑÑко байÑово оÑмеÑÑване, попÑлва пÑавилниÑе /Length ÑÑойноÑÑи, запиÑва валидна xref ÑаблиÑа и trailer и излÑÑва hello.pdf. ÐÑвоÑеÑе го в коÑÑо и да е пÑогÑама за пÑеглед и Ñе полÑÑиÑе една ÑÑÑаниÑа Ñ âHello, World!â?Ñ 36-ÑоÑкова Helvetica близо до вÑÑÑ
а. Qpdf вÑÑÑи ÑÑÑаÑа ÑабоÑа, а много пÑогÑами за пÑеглед ÑÑÑо Ñака Ñе попÑавÑÑ Ð»ÐµÐºÐ¾ малÑоÑмиÑан Ñайл в движение. ТоÑкаÑа на подкÑепа Ð¾Ñ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½Ñ ÑÑк не е мÑÑзел; ÑабоÑаÑа е в Ñова, Ñе аÑиÑмеÑикаÑа на оÑмеÑÑваниÑÑа е единÑÑвенаÑа ÑаÑÑ Ð¾Ñ ÑоÑмаÑа Ñ Ð½Ñлева конÑепÑÑална ÑÑойноÑÑ Ð¸ най-виÑок пÑоÑÐµÐ½Ñ Ð³ÑеÑки, Ñака Ñе авÑомаÑизиÑанеÑо й позволÑва на ÑÑÑÑкÑÑÑаÑа да оÑÑане Ñова, коеÑо ÑÑиÑе.
ÐаÑо Ñова Ñе маÑабиÑа до Ñеални докÑменÑи
ÐиÑо в доклад Ð¾Ñ ÑÑо ÑÑÑаниÑи не пÑÐ¾Ð¼ÐµÐ½Ñ ÑоÑмаÑа, койÑо ÑокÑ-Ñо изгÑÐ°Ð´Ð¸Ñ Ñе. ÐаÑалогÑÑ Ð²Ñе оÑе Ñе намиÑа в коÑена, дÑÑвоÑо на ÑÑÑаниÑиÑе вÑе оÑе ÑÑбиÑа ÑÑÑаниÑиÑе и вÑÑка ÑÑÑаниÑа вÑе оÑе ÑоÑи кÑм ÑвоиÑе ÑеÑÑÑÑи и поÑок Ð¾Ñ ÑÑдÑÑжание. Това, коеÑо ÑаÑÑе, е ÑиÑинаÑа, а не гÑÑбнакÑÑ: дÑÑвоÑо на ÑÑÑаниÑиÑе Ñе ÑазклонÑва, Ñака Ñе ÑеÑеÑÑÑ Ð´Ð° може да пÑопÑÑне Ñели поддÑÑвеÑа, поÑоÑиÑе Ð¾Ñ ÑÑдÑÑжание ÑÑдÑÑÐ¶Ð°Ñ ÑÑоÑиÑи опеÑаÑоÑи вмеÑÑо пеÑ, ÑÑиÑÑовеÑе Ñе вгÑÐ°Ð¶Ð´Ð°Ñ ÐºÐ°Ñо ÑÐµÑ Ð½Ð¸ ÑобÑÑвени поÑоÑни обекÑи Ñ ÑаблиÑи за ÑиÑини и кодиÑаниÑ, а изобÑажениÑÑа пÑиÑÑÐ¸Ð³Ð°Ñ ÐºÐ°Ñо поÑоÑи ÑÑÑ ÑпеÑиÑиÑни за изобÑажениÑÑа ÑилÑÑи. СÑвÑеменниÑе Ñайлове ÑÑÑо Ñака Ñа Ñклонни да пакеÑиÑÐ°Ñ Ð¼Ð½Ð¾Ð³Ð¾ обекÑи в компÑеÑиÑани поÑоÑи Ð¾Ñ Ð¾Ð±ÐµÐºÑи и да заменÑÑ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð°Ñа xref ÑаблиÑа Ñ Ð¿Ð¾Ñок Ð¾Ñ ÐºÑÑÑÑоÑани пÑепÑаÑки, поÑади коеÑо оÑваÑÑнеÑо на иÑÑинÑки PDF в ÑекÑÑов ÑедакÑÐ¾Ñ Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¾ показва ÑÑена Ð¾Ñ Ð´Ð²Ð¾Ð¸Ñни данни. ÐоделÑÑ Ð¾ÑÐ´Ð¾Ð»Ñ Ðµ иденÑиÑен Ñ Ñози вÑв ваÑÐ¸Ñ ÑÑÑно изÑабоÑен Ñайл. Ðа по-ÑиÑокаÑа гÑаÑика на обекÑи и Ñова как каÑалогÑÑ, дÑÑвоÑо на ÑÑÑаниÑиÑе и ÑеÑниÑиÑе Ñ ÑеÑÑÑÑи Ñе оÑнаÑÑÑ Ð² по-голÑм докÑменÑ, задÑлбоÑенаÑа обиколка на ÑÑÑÑкÑÑÑаÑа на PDF докÑменÑи пÑодÑлжава оÑÑам, кÑдеÑо Ñази ÑпиÑа, а пÑегледÑÑ Ð½Ð° ÑайловаÑа ÑÑÑÑкÑÑÑа Ð¾Ð±Ñ Ð²Ð°Ñа инкÑеменÑалниÑе акÑÑализаÑии и как trailer Ñе ÑвÑÑзва пÑез ÑевизииÑе.
ÐÑ Ð¿Ð¸Ñане на ÑÑка кÑм библиоÑека
ÐиÑанеÑо на обекÑи на ÑÑка е ÑÑебно ÑпÑажнение, а не пÑоизводÑÑвена ÑеÑ
ника. РмоменÑа, в койÑо Ñе нÑждаеÑе Ð¾Ñ Ñеални ÑÑиÑÑове, Ð¾Ð±Ð²Ð¸Ñ ÑекÑÑ, изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ неÑо повеÑе Ð¾Ñ ÑÑивиална ÑÑÑаниÑа, ÑÑеÑоводÑÑвоÑо на байÑовеÑе, коеÑо pdftk попÑави за ваÑ, ÑÑава ÑÑлаÑа задаÑа, и вие иÑкаÑе библиоÑека, коÑÑо Ñ Ð¿ÑиÑежава. СÑÑиÑе Ð¿ÐµÑ Ð¾Ð±ÐµÐºÑа вÑе оÑе Ñе пиÑаÑ, но библиоÑека изÑиÑлÑва вÑÑко оÑмеÑÑване, ÑпÑавлÑва ÑеÑниÑиÑе на ÑÑиÑÑовеÑе и ÑеÑÑÑÑиÑе и компÑеÑиÑа поÑоÑиÑе Ð¾Ñ ÑÑдÑÑжание, без да ÑледиÑе ниÑо един байÑ. Ð Delphi и C++Builder, HotPDF Component Ñвежда ÑÐµÐ»Ð¸Ñ Ñози Ñайл до Ñепа извикваниÑ: наÑÑÑойка на докÑменÑа, извикване на BeginDoc, SetFont и TextOut за поÑÑавÑне на ÑÑÑÐ¸Ñ Ð¿Ð¾Ð·Ð´Ñав, и Ñлед Ñова EndDoc за запиÑване на пÑÐ°Ð²Ð¸Ð»Ð½Ð¸Ñ ÐºÐ°Ñалог, дÑÑво на ÑÑÑаниÑиÑе, xref и trailer. РазбиÑанеÑо на обекÑиÑе оÑÐ´Ð¾Ð»Ñ Ðµ Ñова, коеÑо ви позволÑва да ÑазÑÑждаваÑе вÑÑÑ
Ñ ÑезÑлÑаÑа, когаÑо даден докÑÐ¼ÐµÐ½Ñ Ð½Ðµ Ñе визÑализиÑа по наÑина, по койÑо ÑÑе оÑаквали.