Мазмұнға өту
pdftools.kz

xref дегеніміз не

Xref — айқас сілтемелер кестесі: қараушы бағдарлама құжатты түгел оқымай-ақ керек нысанды табатын байт ығысуларының тізімі. Бағдарлама файлдың басын емес, соңын оқиды: онда startxref сөзі мен кестенің мекенжайы жазылған. Сол мекенжайға секіріп, трейлерден каталогқа, каталогтан беттер ағашына жетеді. Байттар жылжыса, ішіндегі нысандардың бәрі аман болса да, құжат ашылуын қояды.

Браузерде жергіліктітіркеусіз

Сандар туралы қысқаша

Кесте мекенжайы қайда
файл соңындағы startxref кілт сөзінде
Жазбада не бар
нысанның құжат басынан бергі байт ығысуы
Екі нұсқасы
классикалық кесте және PDF 1.5-тен бергі xref-ағын
qpdf сәтті коды
3 — ескертулер болды, файл жиналды; 2 — бас тарту
Жөндеу есебіндегі белгі
XREF_REBUILT — кесте қайта құрылды

Файлдың соңғы жолынан бірінші бетке дейінгі жол

  1. Қараушы файлдың құйрығын оқып, ондағы startxref сөзін іздейді — бұл соңғы мағыналы жазба.
  2. Кілт сөзден кейін сан тұрады: кестенің файлдың ең бірінші байтынан бастап есептелген ығысуы.
  3. Сол мекенжай бойынша кестенің өзі оқылады — әр нысанға бір жол, ығысуы және «бос» не «бос емес» белгісі.
  4. Қасында каталогқа сілтейтін трейлер, ал каталогта беттер ағашына сілтеме тұрады.
  5. Қажет бет ығысу бойынша бір қадаммен алынады. Сондықтан мың парақтық құжат екі парақтықтай жылдам ашылады.

Бір кестенің екі түрі

Классикалық кесте — қарапайым мәтін: бөлімше тақырыбы, оның астында тұрақты ұзындықтағы жазбалар, ығысуы солға қарай нөлмен толтырылған. Оны кез келген мәтін редакторынан көруге болады және ол құрылымы сығылмай сақталған файлдарда тұрады.

PDF 1.5 нұсқасынан бастап кестені беттің мазмұнымен бірдей сүзгімен қапталған кәдімгі ағын-нысан ретінде сақтауға рұқсат етілген. Бұл ықшамдырақ және ұсақ нысандарды ортақ контейнерге жасыруға мүмкіндік береді, бірақ мұндай кестені көзбен оқу мүмкін емес. Ескі қараушылар үшін екі түрі қатар жататын аралас файлдар да кездеседі.

Ығысулар неге дұрыс болмай қалады

  • Файл мәтін ретінде түзетілген: бір жол басқа ұзындықтағы жолмен ауыстырылған да, одан кейінгінің бәрі жылжып кеткен.
  • Жүктеу үзілген. Файлдың соңы келмеген, демек startxref те, кестенің өзі де жоқ.
  • Екі PDF жай жалғанған: екіншісіндегі ығысулар ортақ файлдың емес, өз басының есебінен алынған.
  • Үстеме сақтау жартылай үзіліп, алдыңғы кестеге сілтейтін тізбек шорт кеткен.
  • Құжатты жасаған бағдарламаның өзі қате ығысу жазған — сирек, бірақ өз қолымен жазылған жүктемелерде кездеседі.

Қалпына келтіру не істейді

Жөндеу бұзылған сандарды түзетуге тырыспайды. Ол файлды бастан-аяқ оқып шығып, нысан басталатын әр орынды белгілейді де, тапқанының негізінде кестені жаңадан құрады. Ығысулар содан кейін өлшеу арқылы алынғандықтан дұрыс болады.

Бұл жұмысты істейтін qpdf үшін 3 коды «ескертулер болды, құжат жиналды» дегенді білдіреді және бұл сәтсіздік емес, табыс. Нағыз қате — 2 коды: ол файлды түгел қарап шыққанда трейлер де, нысандардың байланысты құрылымы да табылмағанда келеді. Есепте қайта құрылған кесте XREF_REBUILT деп белгіленеді, бұл — ең жиі кездесетін нәтиже.

Жиі қойылатын сұрақтар

xref-ті мәтін редакторында қолмен жөндеуге бола ма?

Теорияда болады, іс жүзінде жоқ. Кез келген түзету одан кейінгі ығысулардың бәрін жылжытады, сондықтан бір жолды емес, бүкіл кестені қайта санауға тура келеді. Файлды түгел қарап шығу дәл соны бір өтуде және арифметикасыз істейді.

«can't find startxref» хабары нені білдіреді?

Бағдарлама файл соңына дейін оқып, кестеге сілтейтін көрсеткішті таппады. Көбіне бұл үзілген жүктеу немесе көшіру кезінде қиылып қалған файл, сирегірек — пошта шлюзі не архиватор құйрығына жазып кеткен қоқыс.

Кесте құжаттың салмағына әсер ете ме?

Тек ұсақ файлдарда байқалады. Әр жазба жиырма шақты байт алады, сондықтан жүз нысаны бар құжатта кесте екі килобайттай болады, ал суреті көп жүз бетте ол суреттердің аясында мүлде білінбейді.

Қалпына келтіруден кейін файл көлемі неге өзгерді?

Құжат қайта жазылды: нысандар қатарынан орналасты, үстеме сақтаудан қалған беттердің ескі нұсқалары алынып тасталды, кесте нөлден құрылды. Файл бастапқыдан кіші де, құрылымы бұрын тығызырақ қапталған болса сәл үлкен де болуы мүмкін.

Жақын құралдар