PDF ÑеÑеÑÑÑ Ð½Ðµ запоÑва Ð¾Ñ Ð½Ð°ÑалоÑо на Ñайла. Той запоÑва Ð¾Ñ ÐºÑаÑ. ÐоÑледниÑе нÑколко байÑа ÑÑдÑÑÐ¶Ð°Ñ Ð°Ð´ÑеÑа на вÑиÑко оÑÑанало, а паÑÑеÑ, койÑо не ÑазбиÑа Ñази поÑледоваÑелноÑÑ, Ñе ÑазÑеÑе гÑеÑно ÑоÑмаÑа оÑе Ð¾Ñ Ð¿ÑÑÐ²Ð¸Ñ Ñед. ÐÑо заÑо най-полезниÑÑ Ð½Ð°Ñин да наÑÑиÑе ÑÑÑÑкÑÑÑаÑа на PDF на диÑка е да Ñ ÑазбеÑеÑе по наÑина, по койÑо го пÑави ÑеÑеÑÑÑ: оÑзад напÑед, Ñлед Ñова пÑеÑкаÑане назад кÑм каÑÑаÑа и накÑÐ°Ñ Ð¸Ð·Ð²Ð»Ð¸Ñане на обекÑиÑе, кÑм коиÑо ÑоÑи ÑÑ.
СамиÑе байÑове Ñа доÑÑаÑÑÑно леÑни за ÑеÑене в ÑекÑÑов ÑедакÑоÑ, когаÑо ниÑо не е компÑеÑиÑано. Ðинимален докÑÐ¼ÐµÐ½Ñ Ð¾Ñ ÐµÐ´Ð½Ð° ÑÑÑаниÑа, койÑо изпиÑва âHello, World!â? заема под пеÑÑÑоÑин байÑа, каÑо в него Ñе вижда вÑеки ÑÑÑÑкÑÑÑен ÐµÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° ÑоÑмаÑа. ÐÑо ÑÐµÐ»Ð¸Ñ Ñайл Ñ Ð¾ÑбелÑзани ÑеÑиÑи ÑаÑÑи:
%PDF-1.0 % Header
%âãÃÃ
1 0 obj % Body: the object sequence
<<
/Kids [2 0 R]
/Count 1
/Type /Pages
>>
endobj
2 0 obj
<<
/Rotate 0
/Parent 1 0 R
/Resources 3 0 R
/MediaBox [0 0 612 792]
/Contents [4 0 R]
/Type /Page
>>
endobj
3 0 obj
<< /Font << /F0 << /BaseFont /Times-Italic /Subtype /Type1 /Type /Font >> >> >>
endobj
4 0 obj
<< /Length 65 >>
stream
1. 0. 0. 1. 50. 700. cm BT
/F0 36. Tf
(Hello, World!) Tj
ET
endstream
endobj
5 0 obj
<< /Pages 1 0 R /Type /Catalog >>
endobj
xref % Cross-reference table
0 6
0000000000 65535 f
0000000015 00000 n
0000000074 00000 n
0000000192 00000 n
0000000291 00000 n
0000000409 00000 n
trailer % Trailer
<<
/Root 5 0 R
/Size 6
>>
startxref
459
%%EOF
ЧеÑиÑи ÑаÑÑи, винаги в Ñози Ñед по дÑлжинаÑа на Ñайла: header (заглавна ÑаÑÑ), body (ÑÑло Ñ Ð¾Ð±ÐµÐºÑи), cross-reference table (ÑаблиÑа Ñ Ð¿ÑепÑаÑки) и trailer (кÑайна ÑаÑÑ). УловкаÑа е, Ñе ги ÑеÑеÑе в поÑÑи обÑаÑен Ñед. ISO 32000-2 §7.5.1 опиÑва ÑÑÑаÑа ÑеÑиÑикомпоненÑна ÑÑÑÑкÑÑÑа, каÑо пÑиÑинаÑа за доÑÑÑпа оÑзад напÑед е ÑиÑÑо пÑакÑиÑеÑка: ÑеÑеÑ, койÑо ÑкаÑа диÑекÑно кÑм Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¸Ñ Ð¾Ð±ÐµÐºÑ, е много по-бÑÑз Ð¾Ñ Ñози, койÑо ÑканиÑа вÑеки Ð±Ð°Ð¹Ñ Ð¾Ñ ÑамоÑо наÑало, а Ñози пÑоизволен доÑÑÑп Ñе оÑигÑÑÑва именно Ð¾Ñ ÐºÑайнаÑа ÑаÑÑ (trailer) и ÑаблиÑаÑа Ñ Ð¿ÑепÑаÑки (xref).
ÐаглавнаÑа ÑаÑÑ (header) Ñе ÑÑÑÑои Ð¾Ñ Ð´Ð²Ð° Ñеда, каÑо вÑоÑиÑÑ Ðµ по-важниÑÑ
ÐÑÑвиÑÑ Ñед е %PDF-1.0. ÐнакÑÑ Ð·Ð° пÑоÑÐµÐ½Ñ Ð³Ð¾ пÑави коменÑÐ°Ñ Ð¾Ñ Ð³Ð»ÐµÐ´Ð½Ð° ÑоÑка на ÑинÑакÑиÑа, но ÑеÑÑиÑе го пÑÐ¸ÐµÐ¼Ð°Ñ ÐºÐ°Ñо ÑигнаÑÑÑа на Ñайла и извлиÑÐ°Ñ Ð²ÐµÑÑиÑÑа Ð¾Ñ Ð½ÐµÐ³Ð¾. РабоÑаÑа Ñ Ð²ÐµÑÑииÑе на пÑакÑика е гÑвкава. ЧеÑеÑ, ÑÑздаден за PDF 2.0, Ñ ÑдоволÑÑвие Ñе оÑвоÑи Ñайл, деклаÑиÑан каÑо 1.0, а повеÑеÑо ÑеÑÑи Ñе напÑавÑÑ Ð¾Ð¿Ð¸Ñ Ð´Ð° заÑедÑÑ Ñайл, ÑиÑÑо веÑÑÐ¸Ñ Ðµ гÑеÑна или ÑийÑо Ñед Ñ Ð²ÐµÑÑиÑÑа е Ñазположен малко по-навÑÑÑе вÑв Ñайла, вмеÑÑо на Ð±Ð°Ð¹Ñ Ð½Ñла. ÐомеÑÑÑ Ðµ подÑказка за оÑакваниÑе ÑÑнкÑионалноÑÑи, а не огÑаниÑение.
ÐÑоÑиÑÑ Ñед е Ñози, койÑо Ñ Ð¾ÑаÑа ÑеÑÑо изÑÑÐ¸Ð²Ð°Ñ Ð¿Ð¾ невнимание и Ñлед Ñова пÑекаÑÐ²Ð°Ñ ÑаÑове в ÑÑÑÑене на пÑоблема. Той ÑÑÑо е коменÑаÑ, но ÑÑдÑÑжаниеÑо Ð¼Ñ Ñе ÑÑÑÑои Ð¾Ñ ÑеÑиÑи байÑа над ASCII 127. Те ÑÑÑеÑÑвÑваÑ, за да може вÑеки инÑÑÑÑменÑ, пÑÐµÑ Ð²ÑÑлÑÑ Ñайла в ÑекÑÑов Ñежим, да го Ñазпознае каÑо двоиÑен и да ÑпÑе да пÑенапиÑва знаÑиÑе за кÑай на Ñед. PDF ÑайлÑÑ ÑÑдÑÑжа компÑеÑиÑани поÑоÑи, ÑииÑо байÑове Ð¼Ð¾Ð³Ð°Ñ ÑлÑÑайно да ÑÑÐ²Ð¿Ð°Ð´Ð½Ð°Ñ ÑÑÑ Ð·Ð½Ð°Ñи за кÑай на Ñед; ако пÑÐµÑ Ð²ÑÑлÑÑиÑÑ ÑоÑÑÑÐµÑ Ð³Ð¸ пÑенапиÑе, дÑлжинаÑа на поÑока в ÑеÑника веÑе нÑма да ÑÑоÑвеÑÑÑва на байÑовеÑе на диÑка и ÑайлÑÑ Ñе Ñе повÑеди. Този коменÑÐ°Ñ Ñ Ð²Ð¸ÑокобайÑови Ñимволи е ÑеÑиÑидеÑеÑгодиÑна заÑиÑа ÑÑеÑÑ FTP ÑÑанÑÑеÑи в Ñежим ASCII и вÑе оÑе пÑиÑÑÑÑва вÑв вÑеки Ñайл, запиÑан Ð¾Ñ Ð¿ÑоÑеÑионален инÑÑÑÑменÑ, ÑÑй каÑо пÑедоÑвÑаÑÑва ÑÐ¸Ñ Ð°, но пÑлна повÑеда на данниÑе.
ТÑлоÑо (body) ÑÑдÑÑжа обекÑиÑе, каÑо вÑеки Ð¾Ñ ÑÑÑ Ðµ номеÑиÑан
ÐÑиÑко, коеÑо ÑÑÑÑавлÑва докÑменÑа, Ñе намиÑа в ÑÑлоÑо каÑо плоÑка поÑедиÑа Ð¾Ñ ÐºÐ¾Ñвени обекÑи. ÐÑеки Ð¾Ð±ÐµÐºÑ Ð·Ð°Ð¿Ð¾Ñва Ñ Ð´Ð²Ðµ Ñели ÑиÑла и клÑÑоваÑа дÑма obj, ÑÑдÑÑжа ÑамоÑо ÑÑдÑÑжание и завÑÑÑва Ñ endobj. ÐÐ±ÐµÐºÑ 1 в пÑимеÑа по-гоÑе е вÑзелÑÑ Ð½Ð° дÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи: 1 0 obj, Ñлед Ñова ÑеÑник и накÑÐ°Ñ endobj. ÐÑÑвоÑо ÑÑло ÑиÑло е номеÑÑÑ Ð½Ð° обекÑа, а вÑоÑоÑо е номеÑÑÑ Ð½Ð° неговаÑа генеÑаÑиÑ. ÐенеÑаÑиÑÑа поÑÑи винаги е нÑла пÑи новоÑÑздаден Ñайл; ÑÑ Ñе ÑвелиÑава Ñамо когаÑо Ð½Ð¾Ð¼ÐµÑ Ð½Ð° Ð¾Ð±ÐµÐºÑ Ñе използва повÑоÑно пÑи поÑледваÑи пÑомени, коеÑо е Ñолкова ÑÑдко, Ñе можеÑе да пÑиемеÑе ненÑлева генеÑаÑÐ¸Ñ ÐºÐ°Ñо знак, Ñе ÑайлÑÑ Ðµ пÑеминал пÑез инкÑеменÑални акÑÑализаÑии. СÑдÑÑжаниеÑо Ð¼ÐµÐ¶Ð´Ñ ÐºÐ»ÑÑовиÑе дÑми ÑÑк е ÑеÑник, запиÑан Ð¼ÐµÐ¶Ð´Ñ << и >>, но Ñо може да бÑде ÑÑÑо ÑиÑло, низ, маÑив или поÑок Ð¾Ñ Ð´Ð°Ð½Ð½Ð¸.
Това, коеÑо пÑави Ñази ÑÑÑÑкÑÑÑа гÑаÑ, а не ÑпиÑÑк, е ÑеÑеÑенÑниÑÑ Ð¼Ð°ÑÐºÐµÑ 2 0 R. Той ознаÑава âобекÑ?2, генеÑаÑÐ¸Ñ 0, незавиÑимо кÑде Ñе намиÑа вÑв Ñайлаâ? ÐÑзелÑÑ Ð½Ð° дÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи по-гоÑе не ÑÑдÑÑжа ÑамаÑа ÑÑÑаниÑа; Ñой ÑоÑи кÑм Ð¾Ð±ÐµÐºÑ 2, койÑо по ÑÑÑÐ¸Ñ Ð¼ÐµÑ
анизÑм ÑоÑи кÑм ÑвоиÑе ÑеÑÑÑÑи и поÑок Ð¾Ñ ÑÑдÑÑжание. ТÑлоÑо Ñе подÑежда в Ñед, какÑвÑо е Ñдобен за запиÑваÑаÑа пÑогÑама, а пÑепÑаÑкиÑе го ÑвÑÑÐ·Ð²Ð°Ñ Ð² дÑÑво Ñ ÐºÐ¾Ñен в каÑалога. ÐозиÑиÑÑа вÑв Ñайла нÑма знаÑение. ÐденÑиÑноÑÑÑа идва Ð¾Ñ Ð½Ð¾Ð¼ÐµÑа на обекÑа, а меÑÑоположениеÑо Ñе опÑÐµÐ´ÐµÐ»Ñ Ð¾Ñ ÑаблиÑаÑа Ñ Ð¿ÑепÑаÑки.
ТаблиÑаÑа Ñ Ð¿ÑепÑаÑки (xref) е Ð¸Ð½Ð´ÐµÐºÑ Ð¾Ñ Ð±Ð°Ð¹Ñови оÑмеÑÑваниÑ
ТаблиÑаÑа xref е Ñова, коеÑо пÑевÑÑÑа номеÑаÑа на обекÑиÑе в позиÑии вÑв Ñайла. ÐоÑади Ñази пÑиÑина ÑеÑеÑÑÑ Ð¼Ð¾Ð¶Ðµ да оÑвоÑи докÑÐ¼ÐµÐ½Ñ Ð¾Ñ Ñ Ð¸Ð»Ñда ÑÑÑаниÑи и да ÑендеÑиÑа ÑÑÑаниÑа 850, без да паÑÑва пÑÐµÐ´Ñ Ð¾Ð´Ð½Ð¸Ñе 849 ÑÑÑаниÑи. ÐÑеки Ð·Ð°Ð¿Ð¸Ñ Ñказва ÑоÑно кÑде запоÑва неговиÑÑ Ð¾Ð±ÐµÐºÑ, измеÑено в байÑове Ð¾Ñ Ð½Ð°ÑалоÑо на Ñайла:
xref
0 6 % 6 entries, starting at object 0
0000000000 65535 f % entry 0: head of the free list
0000000015 00000 n % object 1 begins at byte 15
0000000074 00000 n % object 2 begins at byte 74
0000000192 00000 n % object 3 begins at byte 192
0000000291 00000 n % object 4 begins at byte 291
0000000409 00000 n % object 5 begins at byte 409
ФикÑиÑанаÑа ÑиÑина е ÑмиÑлена. ÐÑеки Ð·Ð°Ð¿Ð¸Ñ Ðµ ÑоÑно двадеÑÐµÑ Ð±Ð°Ð¹Ñа: деÑеÑÑиÑÑено оÑмеÑÑване, инÑеÑвал, пеÑÑиÑÑена генеÑаÑиÑ, инÑеÑвал, едноÑимволен Ñип и двÑбайÑов кÑай на Ñед. ÐоÑади едноÑодноÑÑÑа на ÑедовеÑе, ÑеÑеÑÑÑ Ð¼Ð¾Ð¶Ðµ да оÑиде диÑекÑно до запиÑа за Ð¾Ð±ÐµÐºÑ n по аÑиÑмеÑиÑен пÑÑ, вмеÑÑо ÑÑез ÑканиÑане, Ñака Ñе ÑаблиÑаÑа, коÑÑо оÑигÑÑÑва пÑоизволен доÑÑÑп до ÑÑлоÑо, Ñама по Ñебе Ñи е Ñ Ð¿Ñоизволен доÑÑÑп. РедÑÑ 0 6 е заглавие на подÑекÑиÑ: Ñой Ñказва, Ñе ÑледваÑиÑе запиÑи опиÑÐ²Ð°Ñ ÑеÑÑ Ð¾Ð±ÐµÐºÑа, запоÑвайки Ð¾Ñ Ð½Ð¾Ð¼ÐµÑ 0.
ÐÐ±ÐµÐºÑ 0 е ÑпеÑиален и винаги пÑиÑÑÑÑва. ÐеговиÑÑ Ñип е f (Ñвободен), неговаÑа генеÑаÑÐ¸Ñ Ðµ 65535 и Ñой оглавÑва ÑвÑÑÐ·Ð°Ð½Ð¸Ñ ÑпиÑÑк Ð¾Ñ Ñвободни номеÑа на обекÑи. ÐÑв Ñайл, койÑо никога не е ÑедакÑиÑан, ÑвободниÑÑ ÑпиÑÑк ÑÑдÑÑжа Ñамо Ñози един запиÑ, коеÑо е ÑоÑмалноÑÑ. Той обаÑе е изклÑÑиÑелно полезен пÑи инкÑеменÑални акÑÑализаÑии, когаÑо изÑÑиванеÑо на Ð¾Ð±ÐµÐºÑ Ð´Ð¾Ð±Ð°Ð²Ñ Ð½Ð¾Ð¼ÐµÑа Ð¼Ñ ÐºÑм Ñози ÑпиÑÑк, за да може пÑи ÑледваÑа пÑомÑна Ñой да бÑде използван оÑново. ÐÑÑаналиÑе запиÑи Ñа Ð¾Ñ Ñип n (използвани), а ÑÑÑ
ноÑо деÑеÑÑиÑÑено ÑиÑло е оÑмеÑÑванеÑо, на коеÑо ÑÑÑбва да Ñе позиÑиониÑаÑе, за да пÑоÑеÑеÑе деÑиниÑиÑÑа на обекÑа.
ÐÑайнаÑа ÑаÑÑ (trailer) е Ð²Ñ Ð¾Ð´Ð½Ð°Ñа ÑоÑка и Ñе намиÑа накÑаÑ
ÐÑайнаÑа ÑаÑÑ (trailer) е пÑÑвоÑо неÑо, коеÑо ÑеÑеÑÑÑ Ð¾Ð±ÑабоÑва, Ð¼Ð°ÐºÐ°Ñ Ð´Ð° Ñе запиÑва поÑледна. ÐаÑÑеÑÑÑ Ð¾ÑваÑÑ Ñайла, оÑива до кÑÐ°Ñ Ð¸ Ñе вÑÑÑа назад в ÑÑÑÑене на %%EOF. ТоÑно над него Ñе намиÑа startxref, поÑледвано Ð¾Ñ ÐµÐ´Ð½Ð¾ ÑиÑло, коеÑо пÑедÑÑавлÑва байÑовоÑо оÑмеÑÑване на клÑÑоваÑа дÑма xref. ЧÑез него ÑеÑеÑÑÑ ÑкаÑа диÑекÑно кÑм ÑаблиÑаÑа Ñ Ð¿ÑепÑаÑки, без да е ÑканиÑал ниÑо един обекÑ:
trailer
<<
/Root 5 0 R % the document catalog
/Size 6
>>
startxref
459
%%EOF
РеÑникÑÑ Ð½Ð° кÑайнаÑа ÑаÑÑ ÑÑдÑÑжа двеÑе ÑÑойноÑÑи, Ð¾Ñ ÐºÐ¾Ð¸Ñо ÑеÑеÑÑÑ Ñе нÑждае, пÑеди да пÑедпÑиеме каквоÑо и да било дÑÑго. /Root ÑоÑи кÑм каÑалога на докÑменÑа (ÑÑк Ð¾Ð±ÐµÐºÑ 5), койÑо е вÑÑÑ
ÑÑ Ð½Ð° гÑаÑа Ð¾Ñ Ð¾Ð±ÐµÐºÑи и пÑÑÑÑ ÐºÑм дÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи. /Size е бÑоÑÑ Ð·Ð°Ð¿Ð¸Ñи, коиÑо ÑÑÑбва да ÑÑдÑÑжа ÑаблиÑаÑа Ñ Ð¿ÑепÑаÑки, коеÑо е Ñ ÐµÐ´Ð¸Ð½Ð¸Ñа повеÑе Ð¾Ñ Ð½Ð°Ð¹-виÑÐ¾ÐºÐ¸Ñ Ð½Ð¾Ð¼ÐµÑ Ð½Ð° Ð¾Ð±ÐµÐºÑ Ð·Ð°Ñади ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° позиÑÐ¸Ñ Ð½Ñла. ÐÑ %%EOF пÑоизÑиÑа ÑÑлаÑа поÑледоваÑелноÑÑ Ð½Ð° ÑеÑене: намиÑане на маÑкеÑа, ÑеÑене на startxref за локализиÑане на ÑаблиÑаÑа, заÑеждане на ÑаблиÑаÑа за полÑÑаване на меÑÑоположениеÑо на вÑеки обекÑ, ÑеÑене на /Root за оÑкÑиване на каÑалога и заÑеждане на обекÑиÑе пÑи необÑ
одимоÑÑ. ÐаглавнаÑа ÑаÑÑ (header) на вÑÑÑ
а поÑÑи не Ñе използва до по-кÑÑен еÑап. ÐаÑÑаÑа в дÑноÑо е Ñова, коеÑо е необÑ
одимо на ÑеÑеÑа на пÑÑво мÑÑÑо.
ÐнкÑеменÑалнаÑа акÑÑализаÑÐ¸Ñ Ð´Ð¾Ð±Ð°Ð²Ñ Ð²ÑоÑа каÑÑа, вмеÑÑо да пÑенапиÑва Ñайла
Този дизайн Ñ ÑеÑене оÑзад напÑед Ñе оÑплаÑа пÑи пÑомÑна на Ñайла. PDF докÑменÑÑÑ Ð¼Ð¾Ð¶Ðµ да бÑде ÑедакÑиÑан, без да Ñе пÑенапиÑва байÑовеÑе, коиÑо веÑе Ñа на диÑка. ÐовиÑе и пÑоменениÑе обекÑи Ñе добавÑÑ Ð½Ð°ÐºÑаÑ, поÑледвани Ð¾Ñ Ð½Ð¾Ð²Ð° xref ÑекÑÐ¸Ñ Ð¸ нова кÑайна ÑаÑÑ (trailer), а оÑигиналниÑÑ Ñайл под ÑÑÑ
оÑÑава непÑоменен. ÐдинÑÑвенаÑа нова инÑоÑмаÑÐ¸Ñ Ðµ запиÑÑÑ /Prev в Ð½Ð¾Ð²Ð¸Ñ trailer, койÑо ÑÑдÑÑжа байÑовоÑо оÑмеÑÑване на пÑедиÑнаÑа ÑаблиÑа Ñ Ð¿ÑепÑаÑки:
% ... original file, unchanged, ends here ...
6 0 obj % an object added by this edit
<< /Type /Annot /Subtype /Text /Rect [100 700 120 720] >>
endobj
xref % a second xref section, for the new object only
6 1
0000000612 00000 n
trailer
<<
/Root 5 0 R
/Size 7
/Prev 459 % byte offset of the earlier xref table
>>
startxref
680 % offset of this new xref section
%%EOF
ЧеÑеÑÑÑ Ð²Ñе пак запоÑва Ð¾Ñ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ %%EOF и Ñледва startxref до най-новаÑа ÑаблиÑа, но Ñега Ñой пÑоÑледÑва веÑигаÑа /Prev назад кÑм по-ÑÑаÑиÑе ÑаблиÑи, каÑо ги обединÑва, Ñака Ñе най-новиÑÑ Ð·Ð°Ð¿Ð¸Ñ Ð·Ð° даден Ð½Ð¾Ð¼ÐµÑ Ð½Ð° Ð¾Ð±ÐµÐºÑ Ð¸Ð¼Ð° пÑедимÑÑво. СекÑииÑе Ñ Ð¿ÑепÑаÑки ÑоÑмиÑÐ°Ñ ÑвÑÑзан ÑпиÑÑк по дÑлжинаÑа на Ñайла, каÑо вÑÑка една пÑезапиÑва пÑедÑ
однаÑа за ÑÑоÑвеÑниÑе обекÑи. ÐбекÑÑÑ, койÑо е бил заменен пÑи ÑедакÑиÑанеÑо, вÑе оÑе ÑизиÑеÑки ÑÑÑеÑÑвÑва на ÑÑаÑоÑо Ñи оÑмеÑÑване; Ñой пÑоÑÑо веÑе не е доÑÑÑпен, ÑÑй каÑо по-кÑÑен Ð·Ð°Ð¿Ð¸Ñ Ð² xref ÑоÑи кÑм по-нова позиÑиÑ.
Това е Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ÑÑ, койÑо пÑави ÑиÑÑовиÑе подпиÑи в PDF ÑайловеÑе пÑовеÑими. ЦиÑÑовиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð¿Ð¾ÐºÑива опÑеделен байÑов диапазон на Ñайла и ÑÑй каÑо инкÑеменÑалнаÑа акÑÑализаÑÐ¸Ñ Ñамо Ð´Ð¾Ð±Ð°Ð²Ñ Ð´Ð°Ð½Ð½Ð¸ в кÑаÑ, подпиÑаниÑе байÑове никога не Ñе пÑоменÑÑ. ÐодпиÑÑÑ Ð²Ñе оÑе е валиден за оÑÐ¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½, докаÑо по-кÑÑниÑе веÑÑии Ñе намиÑÐ°Ñ Ñлед него, вÑÑка ÑÑÑ ÑобÑÑвена xref ÑекÑÐ¸Ñ Ð¸ trailer. Това е и пÑиÑинаÑа, поÑади коÑÑо PDF може да ÑÑдÑÑжа вÑзÑÑановима Ñ ÑонологиÑ: вÑеки заменен Ð¾Ð±ÐµÐºÑ Ð²Ñе оÑе е на диÑка под пÑÐµÐ´Ñ Ð¾Ð´Ð½Ð° xref ÑекÑиÑ, коеÑо е пÑедимÑÑво за пÑоÑледÑване на веÑÑииÑе, но и ÑиÑк за вÑеки, койÑо е ÑмÑÑал, Ñе изÑÑиванеÑо пÑÐµÐ¼Ð°Ñ Ð²Ð° байÑовеÑе завинаги.
ЦенаÑа на Ñози Ð¿Ð¾Ð´Ñ Ð¾Ð´ е наÑаÑÑванеÑо на ÑазмеÑа. ÐÑÑка ÑедакÑÐ¸Ñ Ñе Ð´Ð¾Ð±Ð°Ð²Ñ Ð² кÑÐ°Ñ Ð¸ ниÑо не Ñе изÑиÑÑва на мÑÑÑо, Ñака Ñе Ñайл, пÑоменÑн многокÑаÑно, наÑÑÑпва неизползваеми обекÑи и дÑлга веÑига Ð¾Ñ xref ÑекÑии. РеÑениеÑо е пÑлно пÑенапиÑване: заÑеждане на докÑменÑа и запиÑванеÑо Ð¼Ñ Ð½Ð°Ð½Ð¾Ð²Ð¾, коеÑо пÑеномеÑиÑа оÑелелиÑе обекÑи, пÑÐµÐ¼Ð°Ñ Ð²Ð° недоÑÑÑпниÑе и излÑÑва една единÑÑвена изÑиÑÑена ÑаблиÑа Ñ Ð¿ÑепÑаÑки. ÐвеÑе ÑÑÑаÑегии Ð¸Ð¼Ð°Ñ ÑвоиÑе пÑедимÑÑва и недоÑÑаÑÑÑи. ÐобавÑнеÑо в кÑÐ°Ñ Ðµ бÑÑзо и запазва подпиÑиÑе и Ñ ÑонологиÑÑа; пÑенапиÑванеÑо е по-бавно, но пÑÐµÐ¼Ð°Ñ Ð²Ð° и двеÑе в замÑна на по-малÑк и компакÑен Ñайл.
ЧеÑене на ÑеÑиÑиÑе ÑаÑÑи на пÑакÑика
ÐознаванеÑо на ÑÑÑÑкÑÑÑаÑа е доÑÑаÑÑÑно за ÑÑÑно оÑÑÑÑанÑване на повеÑеÑо пÑоблеми Ð¾Ñ Ñипа âÑайлÑÑ?не Ñе оÑваÑÑâ? Ðко ÑеÑеÑÑÑ Ð¾ÑÑ
вÑÑли PDF докÑменÑ, обиÑайниÑе пÑиÑини Ñа в дваÑа кÑаÑ, а не в ÑÑедаÑа. ÐÑи непÑлен изÑеглен Ñайл Ñе гÑби кÑайнаÑа ÑаÑÑ, коеÑо ознаÑава, Ñе startxref или %%EOF липÑва и ÑеÑеÑÑÑ Ð½Ñма вÑ
одна ÑоÑка; по-ÑолеÑанÑниÑе ÑеÑÑи Ñе опиÑÐ²Ð°Ñ Ð´Ð° ÑканиÑÐ°Ñ ÑÐµÐ»Ð¸Ñ Ñайл, за да вÑзÑÑановÑÑ ÑаблиÑаÑа xref, коеÑо е ÑоÑно бавниÑÑ Ð¿ÑÑ, койÑо ÑÑ ÑÑÑбва да избегне. ÐепÑавилен ÑÑанÑÑÐµÑ Ð² ÑекÑÑов Ñежим повÑежда байÑовеÑе на поÑока или оÑмеÑÑваниÑÑа ÑпиÑÐ°Ñ Ð´Ð° ÑÑоÑвеÑÑÑÐ²Ð°Ñ Ð½Ð° ÑеалноÑÑÑа, в ÑезÑлÑÐ°Ñ Ð½Ð° коеÑо обекÑиÑе Ñе заÑÐµÐ¶Ð´Ð°Ñ Ð¾Ñ Ð³ÑеÑни позиÑии. ÐогаÑо оÑмеÑÑваниÑÑа в ÑаблиÑаÑа веÑе не ÑоÑÐ°Ñ ÐºÑм Ñеални клÑÑови дÑми obj, ÑайлÑÑ Ðµ ÑÑÑÑкÑÑÑно повÑеден, доÑи ако вÑеки Ð¾Ð±ÐµÐºÑ Ñам по Ñебе Ñи е наÑед.
Ðа ÑазÑабоÑÑиÑиÑе на нов код изводÑÑ Ð¾Ñ Ñази ÑÑÑÑкÑÑÑа е да оÑÑавÑÑ ÑпÑавлениеÑо на байÑовеÑе на ÑпеÑиализиÑана библиоÑека. ÐÑмеÑÑваниÑÑа в ÑаблиÑаÑа Ñ Ð¿ÑепÑаÑки ÑÑÑбва да ÑÑоÑвеÑÑÑÐ²Ð°Ñ ÑоÑно до Ð±Ð°Ð¹Ñ Ð½Ð° дейÑÑвиÑелниÑе позиÑии на вÑеки обекÑ, кÑайнаÑа ÑаÑÑ ÑÑÑбва да ÑоÑи кÑм пÑавилнаÑа ÑаблиÑа, а инкÑеменÑалниÑе акÑÑализаÑии ÑÑÑбва да Ñе ÑвÑÑÐ·Ð²Ð°Ñ Ð¿Ñавилно ÑÑез /Prev. ÐÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ ÐºÐ°Ñо HotPDF Component за Delphi и C++Builder ÑпÑавлÑва вÑиÑки Ñези пÑоÑеÑи пÑи запиÑване на Ñайла, вклÑÑиÑелно избоÑа Ð¼ÐµÐ¶Ð´Ñ Ð´Ð¾Ð±Ð°Ð²Ñне на инкÑеменÑална ÑÐµÐ²Ð¸Ð·Ð¸Ñ Ð¸ запиÑване на компакÑен Ñайл. Ðко иÑкаÑе да видиÑе как Ñе изгÑажда ÑÑÑаÑа ÑÑÑÑкÑÑÑа Ð¾Ñ Ð½ÑлаÑа, вмеÑÑо да Ñ ÑазглобÑваÑе, ÑÑаÑиÑÑа за ÑÑздаване на PDF докÑÐ¼ÐµÐ½Ñ Ð¾Ñ Ð½ÑлаÑа опиÑва подÑобно генеÑиÑанеÑо на header, обекÑи, xref и trailer подÑед.