ÐÐ±ÐµÐºÑ Ð½Ð¾Ð¼ÐµÑ 1 не е ÑÑÑаниÑа 1. Този ÑÐ°ÐºÑ Ð¾Ð±ÑÑква ÑоÑÑÑеÑа за обÑабоÑка на PDF по-ÑеÑÑо Ð¾Ñ Ð²Ñеки дÑÑг аÑÐ¿ÐµÐºÑ Ð½Ð° ÑоÑмаÑа, а за да ÑазбеÑем заÑо, ÑÑÑбва да погледнем оÑвÑд Ñова, коеÑо визÑализаÑоÑÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð²Ð°, и да Ñазгледаме гÑаÑа Ð¾Ñ Ð¾Ð±ÐµÐºÑи, койÑо Ñой дейÑÑвиÑелно ÑеÑе.
PDF ÑайлÑÑ Ðµ ÑÑвкÑпноÑÑ Ð¾Ñ Ð½Ð¾Ð¼ÐµÑиÑани коÑвени обекÑи. СÑÑаниÑиÑе Ñа ÑаÑÑ Ð¾Ñ Ñези обекÑи, но ÑÑÑ
наÑа поÑледоваÑелноÑÑ Ð½Ð° показване нÑма ниÑо обÑо Ñ Ñова кÑде Ñе намиÑÐ°Ñ Ð²Ñв Ñайла или какви номеÑа ноÑÑÑ. РедÑÑ Ð½Ð° показване Ñе опÑÐµÐ´ÐµÐ»Ñ Ð¸Ð·ÑÑло Ð¾Ñ Ð´ÑÑвоÑо /Pages, коеÑо е ÑвÑÑзана ÑÑÑÑкÑÑÑа Ñ ÐºÐ¾Ñен в каÑалога на докÑменÑа. Ðко пÑенебÑегнеÑе Ñова дÑÑво и ÑканиÑаÑе обекÑиÑе по ÑеÑ
ниÑе номеÑа, Ñе ÑглобиÑе ÑÑÑаниÑиÑе в гÑеÑен Ñед пÑи голÑма ÑаÑÑ Ð¾Ñ ÑеалниÑе Ñайлове.
ÐÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи: какво вÑÑÑноÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»Ñ Ñеда
ÐÑеки PDF запоÑва Ñ ÐºÐ°Ñалог на докÑменÑа (ISO 32000-2 §7.7.2). ÐаÑалогÑÑ ÑÑдÑÑжа запиÑа /Pages, койÑо ÑоÑи кÑм коÑена на дÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи. Този коÑенов вÑзел пÑедÑÑавлÑва ÑеÑник Ñ /Type /Pages, маÑив /Kids Ð¾Ñ ÐºÐ¾Ñвени пÑепÑаÑки и ÑÑойноÑÑ /Count, показваÑа обÑÐ¸Ñ Ð±Ñой на кÑайниÑе ÑÑÑаниÑи (лиÑÑа) под него. РедÑÑ Ð½Ð° показване Ñе опÑÐµÐ´ÐµÐ»Ñ ÐµÐ´Ð¸Ð½ÑÑвено Ð¾Ñ Ð¾Ð±Ñ
ожданеÑо на Ñова дÑÑво в дÑлбоÑина Ð¾Ñ Ð»Ñво на дÑÑно.
Ðинимален Ñайл Ð¾Ñ ÑÑи ÑÑÑаниÑи илÑÑÑÑиÑа Ñова по конкÑеÑен наÑин:
%PDF-1.7
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [20 0 R 4 0 R 9 0 R] /Count 3 >>
endobj
% Object 4 is stored third in the file but is page 2 in display order
4 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792]
/Contents 5 0 R /Resources << /Font << /F1 6 0 R >> >> >>
endobj
% Object 9 is stored fourth but is page 3
9 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792]
/Contents 10 0 R /Resources << /Font << /F1 6 0 R >> >> >>
endobj
% Object 20 is stored last but is page 1; Kids[0] decides, not object number
20 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792]
/Contents 21 0 R /Resources << /Font << /F1 6 0 R >> >> >>
endobj
ÐаÑивÑÑ /Kids ÑÑдÑÑжа [20 0 R 4 0 R 9 0 R], коеÑо ознаÑава, Ñе Ð¾Ð±ÐµÐºÑ 20 е ÑÑÑаниÑа 1, Ð¾Ð±ÐµÐºÑ 4 е ÑÑÑаниÑа 2, а Ð¾Ð±ÐµÐºÑ 9 е ÑÑÑаниÑа 3. ÐомеÑиÑанеÑо на обекÑиÑе е без знаÑение. ÐÑеки код, койÑо обÑ
ожда обекÑиÑе по ÑеÑ
Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ Ð¸ ÑÑбиÑа Ñези Ñ /Type /Page, Ñе генеÑиÑа гÑеÑна поÑледоваÑелноÑÑ Ð¿Ñи Ñози Ñайл.
ÐаÑо пÑогÑамиÑе за генеÑиÑане на PDF ÑÑÐ·Ð´Ð°Ð²Ð°Ñ Ð½ÐµÐ¿Ð¾ÑледоваÑелни ÑÑÑÑкÑÑÑи? Ðма нÑколко пÑиÑини. ÐиблиоÑека, коÑÑо пÑедваÑиÑелно Ð·Ð°Ð´ÐµÐ»Ñ Ð½Ð¾Ð¼ÐµÑа на обекÑи за вÑиÑки ÑÑÑаниÑи пÑеди запиÑванеÑо на ÑÑÑ
ноÑо ÑÑдÑÑжание, Ñе ги номеÑиÑа в Ñеда на ÑÑздаване, а Ñлед Ñова Ñе запиÑе байÑовеÑе в какÑвÑо Ñед е Ñдобен за ÑеÑиализаÑоÑа. ÐнÑÑÑÑÐ¼ÐµÐ½Ñ Ð·Ð° обединÑване, койÑо ÑÑединÑва докÑменÑи, пÑеномеÑиÑа обекÑиÑе Ð¾Ñ Ð²Ñеки изÑ
оден докÑменÑ, за да избегне конÑликÑи; пÑеномеÑиÑаниÑе ÑÑÑаниÑи Ñе Ð¾ÐºÐ°Ð·Ð²Ð°Ñ ÑазпÑÑÑнаÑи из обÑаÑа ÑаблиÑа Ñ Ð¾Ð±ÐµÐºÑи, докаÑо новиÑÑ Ð¼Ð°Ñив /Kids в коÑена запазва пÑÐ°Ð²Ð¸Ð»Ð½Ð¸Ñ Ñед на показване. ÐнкÑеменÑалниÑе акÑÑализаÑии добавÑÑ Ð½Ð¾Ð²Ð¸ обекÑи в кÑÐ°Ñ Ð½Ð° Ñайла Ñ Ð½Ð¾Ð²Ð¸ номеÑа, Ñака Ñе ÑÑÑаниÑа, добавена пÑи коÑекÑиÑ, Ñе намиÑа близо до кÑÐ°Ñ Ð½Ð° байÑÐ¾Ð²Ð¸Ñ Ð¿Ð¾Ñок, доÑи ако нейноÑо мÑÑÑо е на пÑÑва позиÑÐ¸Ñ Ð² Ñеда на показване.
ÐлоÑки дÑÑвеÑа и вложени поддÑÑвеÑа
СпеÑиÑикаÑиÑÑа позволÑва две ÑоÑми за дÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи. ÐбикновениÑе генеÑаÑоÑи ÑÑÐ·Ð´Ð°Ð²Ð°Ñ Ð¿Ð»Ð¾Ñка ÑÑÑÑкÑÑÑа: един коÑенов вÑзел /Pages, ÑийÑо маÑив /Kids ÑÑдÑÑжа Ñамо кÑайни обекÑи Ð¾Ñ Ñип /Page. Това Ñе обÑ
ожда леÑно: едно ниво дÑлбоÑина, едно пÑеминаване.
ÐолемиÑе докÑменÑи обикновено Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ Ð±Ð°Ð»Ð°Ð½ÑиÑано дÑÑво. ÐаÑивÑÑ /Kids на коÑÐµÐ½Ð¾Ð²Ð¸Ñ Ð²Ñзел /Pages ÑÑдÑÑжа междинни вÑзли /Pages, вÑеки Ð¾Ñ ÐºÐ¾Ð¸Ñо на Ñвой Ñед пÑиÑежава Ñвой ÑобÑÑвен маÑив /Kids. СÑойноÑÑÑа /Count за вÑеки междинен вÑзел показва обÑÐ¸Ñ Ð±Ñой кÑайни ÑÑÑаниÑи в неговоÑо поддÑÑво, Ñака Ñе визÑализаÑоÑÑÑ Ð¼Ð¾Ð¶Ðµ да пÑопÑÑне Ñели поддÑÑвеÑа пÑи пÑеминаване кÑм конкÑеÑна ÑÑÑаниÑа, без да паÑÑва вÑеки обекÑ. ÐокÑÐ¼ÐµÐ½Ñ Ð¾Ñ 1000 ÑÑÑаниÑи, ÑÑÑÑкÑÑÑиÑан каÑо баланÑиÑано дÑÑво Ñ Ð¿Ð¾ 10 ÑÑÑаниÑи на кÑаен вÑзел, може да локализиÑа ÑÑÑаниÑа 750 ÑÑез двоиÑно ÑÑÑÑене Ñ ÑÑи или ÑеÑиÑи ÑÑÑÑÐµÐ½Ð¸Ñ Ð² ÑеÑниÑи, вмеÑÑо да ÑканиÑа 750 запиÑа в /Kids.
ÐаÑледÑване на аÑÑибÑÑи на ÑÑÑаниÑи
ÐÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи ÑÑдÑÑжа ÑÑÑо меÑ
анизÑм за ÑподелÑне на ÑеÑÑÑÑи. ÐÑкои аÑÑибÑÑи на ÑÑÑаниÑи, каÑо /MediaBox, /CropBox, /Resources и /Rotate, Ñа наÑледÑеми (ISO 32000-2 §7.7.3.4). Ðко ÑеÑникÑÑ Ð½Ð° ÑÑÑаниÑаÑа /Page изпÑÑка нÑкой Ð¾Ñ ÑÑÑ
, ÑеÑеÑÑÑ Ð¿Ñеминава нагоÑе по веÑигаÑа /Parent, докаÑо не оÑкÑие аÑÑибÑÑа или не доÑÑигне коÑена. ÐоÑÑавÑнеÑо на Ñподелен ÑеÑник Ñ ÑÑиÑÑове в коÑÐµÐ½Ð¾Ð²Ð¸Ñ Ð²Ñзел /Pages, вмеÑÑо копиÑанеÑо Ð¼Ñ Ð²Ñв вÑÑка оÑделна ÑÑÑаниÑа, може знаÑиÑелно да намали ÑазмеÑа на Ñайла за докÑменÑи, коиÑо Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ ÐµÐ´Ð½Ð¸ и ÑÑÑи ÑÑиÑÑове навÑÑкÑде.
ÐÑавилоÑо за наÑледÑване ÑÑздава оÑобеноÑÑ Ð·Ð° кода, койÑо ÑеÑе ÑвойÑÑва на ÑÑÑаниÑи. ÐиÑекÑноÑо ÑеÑене на /MediaBox Ð¾Ñ Ð¾Ð±ÐµÐºÑ /Page и ÑÑеÑиÑанеÑо на липÑваÑÐ¸Ñ ÐºÐ»ÑÑ ÐºÐ°Ñо гÑеÑка е непÑавилно; клÑÑÑÑ Ð¼Ð¾Ð¶Ðµ пÑоÑÑо да е наÑледен. ÐодÑÑ, койÑо пÑавилно опÑÐµÐ´ÐµÐ»Ñ Ð³ÐµÐ¾Ð¼ÐµÑÑиÑÑа на ÑÑÑаниÑаÑа, ÑÑÑбва да Ñледва ÑодиÑелÑкаÑа веÑига. Той ÑÑÑо Ñака Ñе нÑждае Ð¾Ñ Ð·Ð°ÑиÑа ÑÑеÑÑ Ñикли: повÑеден Ñайл може да ÑÑдÑÑжа пÑепÑаÑка /Parent, коÑÑо ÑоÑи обÑаÑно кÑм веÑе поÑеÑен вÑзел, коеÑо би довело до безкÑаен ÑикÑл, ако липÑва пÑовеÑка на поÑеÑениÑе обекÑи.
ТаблиÑаÑа xref и поÑоÑиÑе за пÑепÑаÑки
ТÑÑÑенеÑо на коÑвени обекÑи пÑеминава пÑез ÑаблиÑаÑа Ñ Ð¿ÑепÑаÑки (xref) (или Ð½ÐµÐ¹Ð½Ð¸Ñ Ð½Ð°Ñледник â?поÑока за пÑепÑаÑки, вÑведен в PDF 1.5). ТаблиÑаÑа xref ÑÑпоÑÑÐ°Ð²Ñ Ð²Ñеки Ð½Ð¾Ð¼ÐµÑ Ð½Ð° Ð¾Ð±ÐµÐºÑ Ñ Ð±Ð°Ð¹Ñово оÑмеÑÑване вÑв Ñайла. СÑвмеÑÑимиÑÑ ÑеÑÐµÑ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° ÑаблиÑаÑа, за да пÑемине диÑекÑно кÑм пÑоизволен обекÑ; Ñой не ÑканиÑа Ñайла поÑледоваÑелно. Този дизайн Ñ Ð¿Ñоизволен доÑÑÑп пÑави вÑзможно бÑÑзоÑо пÑеминаване Ð¼ÐµÐ¶Ð´Ñ ÑÑÑаниÑиÑе: визÑализаÑоÑÑÑ ÑеÑе каÑалога, намиÑа пÑепÑаÑкаÑа кÑм /Pages ÑÑез xref, ÑеÑе коÑÐµÐ½Ð¾Ð²Ð¸Ñ Ð²Ñзел /Pages, намиÑа ÑÑоÑвеÑÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñ Ð² /Kids и Ñ.н., заÑеждайки Ñамо необÑ
одимиÑе обекÑи.
ÐнкÑеменÑалниÑе акÑÑализаÑии добавÑÑ Ð½Ð¾Ð²Ð° xref ÑекÑÐ¸Ñ Ð² кÑÐ°Ñ Ð½Ð° Ñайла Ñ trailer, койÑо Ñе ÑвÑÑзва обÑаÑно Ñ Ð¿ÑедиÑниÑ. ÐбекÑ, обновен пÑи ÑевизиÑ, полÑÑава нов Ð·Ð°Ð¿Ð¸Ñ Ð² добавенаÑа xref ÑекÑиÑ; оÑигиналниÑе байÑове оÑÑÐ°Ð²Ð°Ñ Ð½Ð° мÑÑÑоÑо Ñи, но Ð±Ð¸Ð²Ð°Ñ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð¸. Ðо Ñози наÑин ÑиÑÑово подпиÑаниÑе PDF Ñайлове оÑÑÐ°Ð²Ð°Ñ Ð¿ÑовеÑими доÑи Ñлед добавÑне на аноÑаÑии или попÑлване на ÑоÑмÑлÑÑи: подпиÑаниÑÑ Ð±Ð°Ð¹Ñов диапазон никога не Ñе пÑоменÑ, а новоÑо ÑÑдÑÑжание Ñе Ñазполага в добавенаÑа ÑекÑиÑ. ÐÑÑвоÑо Ð¾Ñ ÑÑÑаниÑи ÑÑÑо може да Ñе акÑÑализиÑа, Ñака Ñе добавÑнеÑо или изÑÑиванеÑо на ÑÑÑаниÑи пÑи ÑÐµÐ²Ð¸Ð·Ð¸Ñ ÑÑздава нов коÑен /Pages Ñ Ð¾Ð±Ð½Ð¾Ð²ÐµÐ½ маÑив /Kids, докаÑо ÑÑаÑиÑÑ ÐºÐ¾Ñенов Ð¾Ð±ÐµÐºÑ Ð·Ð°Ð¿Ð°Ð·Ð²Ð° пÑÑвонаÑалноÑо Ñи меÑÑоположение вÑв Ñайла.
Ðакво Ñе обÑÑква без Ð¾Ð±Ñ Ð¾Ð¶Ð´Ð°Ð½Ðµ на дÑÑвоÑо
СÑивÑÑ Ð¿Ñи използване на ÑканиÑане на обекÑи е незабележим. ÐÐ·Ñ Ð¾Ð´Ð½Ð¸ÑÑ Ð´Ð¾ÐºÑÐ¼ÐµÐ½Ñ Ð¸Ð·Ð³Ð»ÐµÐ¶Ð´Ð° пÑавилен: ÑÑдÑÑжа ÑоÑÐ½Ð¸Ñ Ð±Ñой ÑÑÑаниÑи и вÑÑка ÑÑÑаниÑа ÑÑдÑÑжа Ñазпознаваемо ÑÑдÑÑжание. ÐÑоблемÑÑ Ðµ, Ñе подÑедбаÑа им е гÑеÑна по наÑин, койÑо завиÑи Ð¾Ñ Ð³ÐµÐ½ÐµÑаÑоÑа, бÑÐ¾Ñ Ð½Ð° ÑевизииÑе и Ñова дали Ñа били вмÑкнаÑи ÑÑÑаниÑи Ð¾Ñ Ð²ÑнÑни изÑоÑниÑи. ТеÑÑова база Ð¾Ñ Ñайлове, ÑÑздадени Ñ ÐµÐ´Ð¸Ð½-единÑÑвен инÑÑÑÑменÑ, може да пÑемине ÑÑпеÑно; ÑайловеÑе Ð¾Ñ Ð´ÑÑг ÑоÑÑÑÐµÑ Ð¸Ð»Ð¸ пÑи пÑоÑÐµÑ Ð½Ð° обединÑване Ñе Ñе пÑовалÑÑ. Ðменно Ñова неÑÑоÑвеÑÑÑвие е пÑиÑинаÑа евÑиÑÑиÑниÑе ÑеÑÐµÐ½Ð¸Ñ Ð½Ð¸ÐºÐ¾Ð³Ð° да не ÑабоÑÑÑ Ð´ÑлгоÑÑоÑно.
ФайловеÑе Ñ Ð¸Ð½ÐºÑеменÑални акÑÑализаÑии Ñа оÑобено ÑÑзвими кÑм Ñова, ÑÑй каÑо ÑÑÑаниÑиÑе, добавени или пÑенаÑедени пÑи по-кÑÑни Ñевизии, ноÑÑÑ Ð¿Ð¾-виÑоки номеÑа на обекÑи, докаÑо ÑедÑÑ Ð½Ð° показване Ñе ÑпÑавлÑва Ð¾Ñ Ð°ÐºÑÑализиÑÐ°Ð½Ð¸Ñ Ð¼Ð°Ñив /Kids. СканиÑане, коеÑо обÑабоÑва обекÑиÑе по ÑеÑ
Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ, Ñе поÑÑави Ñези ÑÑÑаниÑи Ñ Ð¿Ð¾-големи номеÑа накÑаÑ, незавиÑимо кÑде в дÑÑвоÑо е ÑÑÑ
ноÑо Ñеално мÑÑÑо.
РеÑениеÑо не е Ñложно. ÐапоÑнеÑе Ð¾Ñ ÐºÐ°Ñалога, намеÑеÑе пÑепÑаÑкаÑа кÑм /Pages, обÑ
одеÑе маÑива /Kids ÑекÑÑÑивно и изведеÑе кÑайниÑе ÑÑÑаниÑи (лиÑÑа) в Ñеда, в койÑо ги ÑÑеÑаÑе. Ðо деÑиниÑÐ¸Ñ Ñова е ÑедÑÑ Ð½Ð° показване, незавиÑимо Ð¾Ñ Ð½Ð¾Ð¼ÐµÑаÑа на обекÑиÑе, ÑеÑ
ниÑе оÑмеÑÑÐ²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑÑÑÑкÑÑÑаÑа на Ñайла. ÐовеÑеÑо завÑÑÑени PDF библиоÑеки пÑÐµÐ´Ð»Ð°Ð³Ð°Ñ Ð±Ñой ÑÑÑаниÑи и меÑод за доÑÑÑп по индекÑ, коиÑо веÑе пÑавÑÑ Ñова пÑавилно; ÑиÑкÑÑ ÑÑÑеÑÑвÑва в код, койÑо Ð·Ð°Ð¾Ð±Ð¸ÐºÐ°Ð»Ñ Ð¼Ð¾Ð´ÐµÐ»Ð° на ÑÑÑаниÑиÑе на библиоÑекаÑа и доÑÑÑпва диÑекÑно ÑÐ»Ð¾Ñ Ñ Ð¾Ð±ÐµÐºÑи.
Ðдна ÑÑÑÑкÑÑÑна аномалиÑ, коÑÑо Ñи ÑÑÑÑва да Ñе ÑпÑавлÑва изÑиÑно: ÑÑойноÑÑÑа на /Count в междинен вÑзел /Pages може да бÑде гÑеÑна пÑи некоÑекÑно ÑоÑмаÑиÑани Ñайлове. ÐовеÑÑванеÑо на /Count за пÑовеÑка на гÑаниÑиÑе и поÑледваÑо ÑпиÑане пÑеди пÑлноÑо обÑ
ождане ÑиÑ
омÑлком Ñе изпÑÑне ÑÑÑаниÑи, ако бÑоÑÑ Ðµ занижен. Ðо-ÑигÑÑниÑÑ Ð¼Ð¾Ð´ÐµÐ» е да използваÑе /Count Ñамо каÑо наÑока за пÑоизводиÑелноÑÑÑа пÑи пÑедваÑиÑелно заделÑне на Ð¿Ð°Ð¼ÐµÑ Ð¸Ð»Ð¸ двоиÑно ÑÑÑÑене, а дейÑÑвиÑелниÑÑ Ð±Ñой да Ñе извежда Ð¾Ñ ÑамоÑо обÑ
ождане.