Русский

Документы · PDF Инструментарий

Что происходит «под капотом», когда вы объединяете PDF-файлы в браузере

· Как это работает

PDF форматы файлов обработка браузера

Два дерева страниц PDF переходят в новый документ PDF.
Оригинальная векторная иллюстрация ToolAcre

Объединение PDF-файлов выглядит как сшивание, но на самом деле инструмент копирует объекты страницы, шрифты и изображения из одного графа объектов в другой и создает новую таблицу перекрестных ссылок. В этом посте этот процесс рассматривается на вкладке браузера.

Главное, чего нет: почему два PDF-файла нельзя просто объединить как байты и что должен перестроить инструмент слияния

Каждый из двух PDF-файлов имеет собственный заголовок, номера объектов, дерево страниц и информацию о перекрестных ссылках. Добавление байтов второго файла после первого не добавляет его страницы в дерево страниц первого документа. При слиянии необходимо записать новый PDF со ссылками, указывающими на его собственные объекты.

Чтение каждого файла в память — как браузер загружает ваши PDF-файлы в виде байтовых массивов через файл API без какой-либо загрузки.

Средство выбора файлов предоставляет браузеру объекты File, а не URL-адреса сервера. Интерфейс PDF считывает каждый выбранный файл с помощью file.arrayBuffer() и передает байты Uint8Array в операцию обработки. При слиянии файлы не загружаются. Это отличается от утверждения, что при посещении веб-сайта никогда не выполняются сетевые запросы: для загрузки самого сайта требуется соединение.

Анализ графа объектов — заголовки, пронумерованные объекты, дерево страниц и таблица перекрестных ссылок, которую анализатор должен восстановить.

Библиотека PDF загружает каждый исходный документ и разрешает индексы его страниц. Страницы относятся к объектам в другом месте файла, включая шрифты, изображения и состояние графики. Раздел или поток перекрестных ссылок помогает читателю находить косвенные объекты; это не список страниц, которые нужно склеить. Поврежденные или зашифрованные входные данные могут помешать синтаксическому анализу.

Копирование страниц и их ресурсов: почему каждый шрифт, изображение и графика указывают на то, что ссылка на страницу должна сопровождать их

Реализация вызывает PDFDocument.create(), затем out.copyPages(source, source.getPageIndices()) для каждого ввода по порядку и добавляет каждую скопированную страницу к выводу. Библиотека передает ссылочные структуры, необходимые каждой странице; он не делает растровые снимки экрана. Не думайте, что все функции уровня документа перемещаются вместе со страницами.

Написание объединенного файла — перенумерация объектов, построение нового дерева страниц и таблицы перекрестных ссылок, а затем передача вам загрузки.

После добавления страниц библиотека сохраняет новый массив байтов PDF. Его автор обрабатывает ссылки на объекты и сериализацию, а не объединяет исходные файлы. Приложение предлагает результат в виде загрузки. Поскольку это новый документ, размер байтов не обязательно равен сумме входных данных.

Рабочий пример — объединение трехстраничного сопроводительного письма и двенадцатистраничного отсканированного соглашения и о чем вам говорят порядок и размер страниц в результате

Предположим, администратор офиса сначала выбирает сопроводительное письмо на трех страницах, а затем соглашение на двенадцати страницах. Результат должен состоять из пятнадцати страниц: титульные страницы 1–3, затем страницы соглашения 4–15. Перед отправкой файла проверьте первую и последнюю страницы, а также общую сумму. Отсканированный договор может иметь большой размер, поскольку его страницы содержат ресурсы изображений.

Что здесь не распространяется — закладки, поля форм и метаданные документа, обработка которых зависит от собственных правил инструмента и документируется на его странице.

Копирование страниц не гарантирует сохранение закладок, полей формы, метаданных или подписей. В частности, никогда не предполагайте, что криптографическая подпись остается действительной после структурной перезаписи. Сохраните оригиналы и проверьте все юридические требования к подписи отдельно; новый файл не является подписанным оригиналом.

Вывод: слияние — это структурная перезапись, а не конкатенация, и набор инструментов PDF выполняет эту перезапись на вкладке, при этом файл никогда не покидает ваше устройство.

Слияние PDF — это структурная перезапись. Набор инструментов PDF считывает выбранные байты на вкладке, копирует страницы в порядке выбранных файлов и записывает новый файл. Чтобы проверить границу локальной обработки во время сеанса, проверьте панель «Сеть» браузера во время слияния; отличать загрузку ресурсов веб-сайта от любой загрузки вашего документа.