Номера страниц в PDF не совпадают с книгой? Сначала проверьте метки страниц
Как исправить навигацию в PDF, если она расходится с номерами на страницах книги. Разбор шести примеров: римская нумерация вводной части, вклейка и фрагмент со страницы 37.

Если программа для чтения PDF показывает страницу 4, а на самой странице книги напечатана цифра 1, в первую очередь проверьте метки страницв файле. Обложка и введение с римской нумерацией могут смещать физическую позицию, но это не значит, что в книге чего-то не хватает. Исправьте навигационные метки в копии файла — не стоит сразу штамповать новые номера поверх страниц или удалять введение.
У такого исправления есть предел: метки не вернут пропущенный при сканировании лист, не исправят порядок страниц и не подскажут стершийся номер. Сначала определите, какая именно страница перед вами, а затем настройте навигацию так, чтобы она точно ей соответствовала.
Чтобы наглядно показать эту разницу, мы подготовили три пары файлов «до и после», доступных для скачивания: семистраничную тетрадь, вариант со вставленной ненумерованной иллюстрацией и фрагмент, начинающийся с печатной страницы 37. В каждой паре изменились только метки, а сами страницы остались абсолютно неизменными с точностью до пикселя.
Разделите три вида нумерации перед началом работы
В этом руководстве под позицией в файле понимается первая, вторая, третья по порядку страница в PDF. Печатный номер — это число, напечатанное на самой странице. Метка страницы — это логический идентификатор, сохраненный для навигации, например ii или A-1.
Эти значения вполне закономерно могут различаться. В руководстве PDF Association по меткам страниц подробно описаны последовательности нумерации, префиксы и различия между индексами, номерами и метками страниц. Файл может содержать вводную часть с римскими цифрами, основной текст с нумерацией заново и приложения с префиксами, оставаясь при этом абсолютно корректным по общему числу страниц.
Вот как выглядит соответствие в нашем семистраничном учебном файле:
| Позиция в файле | Печатный номер на странице | Исходная навигационная метка | Исправленная метка |
|---|---|---|---|
| 1 | Нет: обложка | 1 | Обложка |
| 2 | i | 2 | i |
| 3 | ii | 3 | ii |
| 4 | 1 | 4 | 1 |
| 5 | 2 | 5 | 2 |
| 6 | A-1 | 6 | A-1 |
| 7 | A-2 | 7 | A-2 |
Cover — это описательная метка, которую мы задали, а не напечатанный на обложке номер. Общее количество страниц по-прежнему равно семи. Программа для чтения может отображать одновременно и метку, и позицию в файле, например 1 (4 of 7); наличие обоих значений не является ошибкой.
Скачайте семистраничный файл до разметки и размеченную версию. Откройте первую страницу основного текста в обоих файлах и сравните саму страницу с элементами панели навигации.

Это предварительный просмотр подготовленных нами страниц с добавленными за пределами изображений метками, а не снимок экрана конкретной программы для чтения PDF.
Определите границы разделов на рабочей копии
Перед редактированием сохраните нетронутую копию оригинала и определите точки перехода, просмотрев страницы: первую пронумерованную страницу предисловия, первую страницу основного текста, любые вклейки, а также каждое приложение или место перезапуска нумерации. Зафиксируйте физический номер страницы в файле рядом с видимым номером на листе.
Не ограничивайтесь проверкой только первой страницы основного текста. В примере выше правило «прибавить три» помогает найти страницу 1 основного текста, но оно не подходит для римской нумерации предисловия или приложения A- . Единое смещение — это лишь временный костыль в пределах одного непрерывного раздела, а не надежное решение для всей книги.
Если последовательность внезапно прерывается — например, видимая нумерация перескакивает с 38 сразу на 40, — изучите промежуточные страницы и при возможности сверьтесь с другим экземпляром того же издания. Причиной может быть пропущенный скан, специальная вклейка, нестандартная авторская пагинация или иной сбой в порядке страниц. Не присваивайте номер «39» неподходящей странице лишь ради того, чтобы счетчик выглядел непрерывным.
Для подписанных или защищенных PDF-файлов используйте разрешенный рабочий процесс работы с исходниками или запросите исправленную копию для чтения у создателя документа. Скрипты для генерации тестовых файлов из этой статьи не предназначены для сохранения или обхода таких ограничений.
Изменяйте навигационные метки, а не напечатанное содержимое
Способ для десктопа, описанный Adobe
В актуальных инструкциях Acrobat по меткам страниц от Adobe рекомендуется перейти в Все инструменты → Упорядочить страницы → Метки страниц. Выберите диапазон, начните новую последовательность, а затем укажите стиль нумерации, начальное значение и необязательный префикс. Повторите это для отдельных разделов; непрерывный раздел может продолжать предыдущую последовательность.
В нашем примере это означает римскую нумерацию для введения, десятичную нумерацию с перезапуском с 1 для основного текста и десятичную нумерацию с A- для приложения. Проверяйте фактически выбранные страницы перед применением каждого изменения, особенно если существующие метки уже отличаются от порядковых номеров файлов.
Adobe проводит различие между этими навигационными метками и видимыми номерами в колонтитулах. Если вам нужно лишь, чтобы элементы управления страницами в читалке совпадали с книгой, добавление видимого нижнего колонтитула — это совсем другая операция.
Эти шаги основаны на официальной документации. Мы не выполняли восстановление файлов в Acrobat и не тестировали конкретный интерфейс Acrobat для этой статьи.
Метод, который мы протестировали с помощью pypdf
Наши тестовые файлы были созданы с помощью ReportLab, клонированы в pypdf 6.10.0 и снабжены метками без изменения потоков содержимого страниц. Исключительно для семистраничного примераосновная операция выглядит так:
from pypdf import PdfReader, PdfWriter
from pypdf.constants import PageLabelStyle
reader = PdfReader("seven-page-before.pdf")
writer = PdfWriter(clone_from=reader)
writer.set_page_label(0, 0, prefix="Cover")
writer.set_page_label(1, 2, style=PageLabelStyle.LOWERCASE_ROMAN, start=1)
writer.set_page_label(3, 4, style=PageLabelStyle.DECIMAL, start=1)
writer.set_page_label(5, 6, style=PageLabelStyle.DECIMAL, prefix="A-", start=1)
with open("seven-page-labeled-copy.pdf", "xb") as output:
writer.write(output)
assert PdfReader("seven-page-labeled-copy.pdf").page_labels == [
"Cover", "i", "ii", "1", "2", "A-1", "A-2"
]
API использует индексацию с нуля: 4-я позиция в файле соответствует индексу 3. Диапазоны выше включают оба конца. Эксклюзивный режим вывода xbзапрещает перезапись существующего файла. Точную реализацию можно посмотреть в версионированном API меток страниц pypdf и в нашем полном генераторе .
Не копируйте эти диапазоны в другую книгу. Сначала составьте карту ее разделов. Наш протестированный скрипт не принимает пользовательские или сторонние PDF: он генерирует исключительно исходные примеры, заданные внутри него.
Два случая, когда фиксированное смещение не работает
Ненумерованная иллюстрация меняет смещение основного текста
Во втором тестовом файле мы вставили вклейку с иллюстрацией между печатными страницами 1 и 2 основного текста. На самой вклейке печатного номера нет. Мы присвоили ей описательную метку Plate-A и продолжили нумерацию следующей страницы основного текста с цифры 2.
| Позиция в файле | Видимый идентификатор страницы | Метка |
|---|---|---|
| 4 | 1 | 1 |
| 5 | Ненумерованная иллюстрация | Вклейка-A |
| 6 | 2 | 2 |
До вставки печатная страница 1 находилась на 4-й позиции в файле — со смещением на три. После вставки печатная страница 2 находится на 6-й позиции в файле — со смещением уже на четыре. Если применить прежнее смещение, вы попадете на иллюстрацию.
Сравните восьмистраничную версию до разметки с размеченной версией. Исправление добавляет секцию меток на месте вставки и возобновляет нумерацию основного текста после нее. При этом вклейка не превращается в нумерованную страницу источника и не удаляется из файла.
Фрагмент может начинаться с печатной страницы 37
Наш третий тестовый файл содержит три страницы с видимыми номерами 37, 38 и 39. Их позиции в файле — 1, 2 и 3. Подходящие метки должны начинаться с 37, а не с 1.
Файл до разметки и файл после разметки содержат ровно те же три страницы. Назначение первой странице метки 37 вовсе не означает, что в PDF присутствуют предшествующие 36 страниц.
Для реального фрагмента используйте номера, которые можно проверить по оригиналу. Если первый видимый номер отсутствует или обрезан, найдите подтверждение в исходных материалах, прежде чем присваивать его. Удобная, но угаданная последовательность может ввести в заблуждение сильнее, чем обычный отсчет по физическому положению страниц в файле.
Проверяйте сохраненный файл, а не только окно редактора
Для этих трех пар мы повторно открыли все шесть PDF-файлов и проверили каждую метку. Poppler 26.08.0 отрисовал обе версии с разрешением 144 dpi. Все 18 соответствующих пар страниц совпали попиксельно, а все 18 потоков содержимого страниц сошлись байт в байт. В ходе этого теста на страницы ничего не накладывалось и ничего из них не удалялось.
Отчет с постраничными результатами включает хеши файлов, метки и попиксельные сравнения. В скачиваемой карте страниц зафиксированы позиции в файле, индексы с нуля и видимые номера. Инструкции по воспроизведению содержат информацию о версиях зависимостей и о том, как перегенерировать примеры в новых каталогах.
Это подтверждает корректность наших файлов, но не поведение любой сторонней программы для просмотра. PDF Association подробно описывает различия в поддержке меток между приложениями; опубликованный ею обзор средств просмотра датирован 2024 годом, и сегодня мы этот тест не повторяли. Проверьте программу, которой вы реально будете пользоваться:
- Заново откройте сохраненную копию и убедитесь, что общее количество страниц не изменилось.
- Проверьте первую и последнюю страницы каждого диапазона нумерации.
- Попробуйте перейти к страницам
ii,1иA-1или к их эквивалентам в вашем документе. - Убедитесь, что каждый переход открывает именно нужную видимую страницу, а не просто подходящее по виду значение счетчика.
- Если программа для просмотра игнорирует метки, сохраните явную таблицу соответствия позиций страницам или используйте читалку, которая с ними работает. Не стоит бесконечно переписывать правильные метки только ради того, чтобы подстроиться под неподдерживаемый интерфейс.
Идентичный рендеринг не гарантирует доступность, подлинность цифровых подписей, работоспособность ссылок или корректность извлеченного текста. Если страница выглядит правильно, но скопированный текст отображается с ошибками, воспользуйтесь отдельным руководством по диагностике текстового слоя PDF. Эту проблему метками страниц не решить.
Сохраните исходную карту, если планируете переводить документ
Если единственной проблемой была точная навигация, на этом можно остановиться. Чтобы переименовать метки страниц, OCR или перевод не требуются.
Если языковой барьер все еще актуален, сохраните исходный файл и схему разметки страниц, прежде чем переходить к процессу перевода отсканированных PDF или руководству по переводу и форматированию PDF. Для комплексной проверки готового документа используйте чек-лист контроля качества перевода PDF.
Пользователям PDF-переводчика BookTranslator не стоит рассчитывать на то, что исходные метки страниц сохранятся в пересобранном файле. Режим OCR может изменить исходный макет, шрифты и их размеры. Если в готовом документе изменилась верстка, сверяйте важные фрагменты с оригиналом: простое копирование старой схемы нумерации поверх новых разрывов страниц не сохранит соответствие.
Главная цель — не сделать все номера одинаковыми, а исключить любую двусмысленность: где именно находится страница в файле, как она названа в первоисточнике и как читателю до нее добраться.
Похожие статьи





