Как узнать количество страниц в pdf-файле, не открывая его

Обновлено: 21.11.2024

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

Вот некоторые из ответов, которые я нашел недостаточными или просто НЕ работающими:

Использование Imagick (расширение PHP)

Imagick требует длительной установки, apache нужно перезапустить, и когда он наконец заработал, обработка заняла невероятно много времени (2-3 минуты на документ), и он всегда возвращал 1 страницу в каждом документе (не видел рабочую копию Imagick до сих пор), поэтому я выбросил ее. Это было как с методами getNumberImages(), так и с методамиidentImage().

Использование FPDI (библиотеки PHP)

FPDI прост в использовании и установке (просто извлеките файлы и вызовите PHP-скрипт), НО многие методы сжатия не поддерживаются FPDI. Затем он возвращает ошибку:

Ошибка FPDF: этот документ (test_1.pdf), вероятно, использует метод сжатия, который не поддерживается бесплатным парсером, поставляемым с FPDI.

Открытие потока и поиск с помощью регулярного выражения:

Это открывает файл PDF в потоке и ищет какую-то строку, содержащую количество страниц или что-то подобное.

  • /\/Count\s+(\d+)/ (ищет /Count ) не работает, потому что только в нескольких документах есть параметр /Count внутри, поэтому в большинстве случаев он ничего не возвращает. Источник.
  • /\/Page\W*(\d+)/ (ищет /Page ) не получает количество страниц, в основном содержит некоторые другие данные. Источник.
  • /\/N\s+(\d+)/ (ищет /N ) также не работает, поскольку документы могут содержать несколько значений /N ; большинство, если не все, не содержат число страниц. Источник.

Итак, что работает надежно и точно?

15 ответов 15

Простой исполняемый файл командной строки с именем: pdfinfo.

Его можно загрузить для Linux и Windows. Вы загружаете сжатый файл, содержащий несколько небольших программ, связанных с PDF. Извлеките его куда-нибудь.

Один из этих файлов — pdfinfo (или pdfinfo.exe для Windows). Пример данных, возвращаемых при запуске в документе PDF:

Я еще не видел документа PDF, в котором он возвращал бы ложное количество страниц (пока). Это также очень быстро, даже с большими документами размером более 200 МБ время отклика составляет всего несколько секунд или меньше.

Существует простой способ извлечь количество страниц из вывода, здесь, в PHP:

Конечно, этот инструмент командной строки можно использовать и на других языках, которые могут анализировать вывод внешней программы, но я использую его в PHP.

Я знаю, что это не чистый PHP, но внешние программы намного лучше обрабатывают PDF (как видно из вопроса).

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

Примечание о безопасности: используйте escapeshellarg для $document, если имя документа передается из пользовательского ввода или загрузки файла.

Если вам нужно отслеживать PDF-файлы, проверяя различную информацию о ваших документах, не открывая каждый из них, попробуйте утилиту Tiff Teller. Он может сказать вам, сколько страниц в нескольких файлах PDF или TIFF. Это отличный инструмент, когда вам нужно спланировать, сколько бумаги потребуется для печати, или перепроверить страницы в поступающей документации. Такие отчеты также используются в различных задачах разработки.

Tiff Teller может показать вам всю информацию о вашем PDF-файле (количество страниц, размер, дата создания и т. д.) на экране или экспортировать данные в отчет в форматах PDF, XLS, CSV, DOC, TXT и многих других. форматы. Те, у кого есть утилита Tiff Teller, не представляют, как вручную считать страницы в нескольких PDF-файлах и создавать для этого отчеты. Вам нужно будет просмотреть каждый документ отдельно, записать количество страниц в таблицу, сохранить эту таблицу как отчет. Это займет довольно много времени, особенно когда вы имеете дело с десятками документов. Tiff Teller легко справляется с этой скучной работой, автоматически подсчитывая количество страниц.

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

<УЛ>
  • Нажмите на папку с файлами PDF для анализа.
  • Нажмите кнопку "Экспорт" (правый значок на верхней панели).
  • Выберите формат для экспорта
  • Формирование набора полей отчета
  • Настройте подписи, верхний и нижний колонтитулы (при необходимости)
  • Нажмите кнопку "Начать экспорт".
  • Если вам нужно экспортировать только количество страниц, вы должны установить поле PageCount для экспорта. Обратите внимание, что информацию можно экспортировать в существующий файл или в новый файл; вы устанавливаете местоположение самостоятельно. Мастер программы поможет вам произвести все настройки.

    Загрузите утилиту Tiff Teller отсюда. Вы можете попробовать бесплатную пробную версию перед покупкой. Когда будете готовы, разместите заказ и получите ключ, чтобы раскрыть весь потенциал приложения.

    Если в определенной папке есть несколько файлов Pdf, теперь вы хотите отобразить все имена этих файлов на листе и получить номера страниц каждого файла. Как бы вы могли справиться с этой задачей в Excel быстро и легко?

    Подсчитайте номера страниц файлов Pdf из папки на листе с кодом VBA

    Возможно, следующий код VBA поможет вам отобразить все имена файлов Pdf и их номера страниц на листе. Сделайте следующее:

    <р>1. Откройте рабочий лист, на который вы хотите получить файлы Pdf и номера страниц.

    <р>2. Удерживая нажатыми клавиши ALT + F11, откроется окно Microsoft Visual Basic для приложений.

    <р>3. Нажмите «Вставить» > «Модуль» и вставьте следующий макрос в окно модуля.

    Код VBA: Список всех имен файлов Pdf и номеров страниц на листе:

    <р>4. После вставки кода, а затем нажмите клавишу F5, чтобы запустить этот код, и появится всплывающее окно «Обзор», выберите папку, содержащую файлы Pdf, которые вы хотите перечислить, и подсчитать номера страниц, см. снимок экрана:

    <р>5. Затем нажмите кнопку «ОК», все имена файлов Pdf и номера страниц будут перечислены на текущем листе, см. снимок экрана:

    Лучшие инструменты для повышения производительности в офисе

    Kutools for Excel решает большинство ваших проблем и повышает вашу производительность на 80%

    • Повторное использование: быстро вставляйте сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки паролем; Создайте список рассылки и отправляйте электронные письма.
    • Панель суперформул (легкое редактирование нескольких строк текста и формул); Макет чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон .
    • Объединение ячеек/строк/столбцов без потери данных; Содержимое разделенных ячеек; Объединить повторяющиеся строки/столбцы. Предотвратить дублирование ячеек; Сравните диапазоны .
    • Выберите повторяющиеся или уникальные строки; Выберите пустые строки (все ячейки пусты); Super Find и Fuzzy Find во многих книгах; Случайный выбор.
    • Точное копирование нескольких ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставьте маркеры, флажки и т. д.
    • Извлечь текст, добавить текст, удалить по положению, удалить пробел; Создать и распечатать пейджинговые промежуточные итоги; Преобразование между содержимым ячеек и комментариями .
    • Суперфильтр (сохранение и применение схем фильтров к другим листам); Расширенная сортировка по месяцам/неделям/дням, частоте и т. д.; Специальный фильтр: полужирный, курсив.
    • Объединение рабочих книг и рабочих листов; Объединение таблиц на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF. Группировка сводной таблицы по номеру недели, дню недели и другим параметрам. Показывать разблокированные и заблокированные ячейки разными цветами; Выделите ячейки с формулой/именем. -->
    • Более 300 мощных функций . Поддерживает Office/Excel 2007-2019 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

    Вкладка Office обеспечивает интерфейс с вкладками в Office и значительно упрощает вашу работу

    • Включить редактирование и чтение с вкладками в Word, Excel, PowerPoint , Publisher, Access, Visio и Project.
    • Открывать и создавать несколько документов на новых вкладках того же окна, а не в новых окнах.
    • Повышает вашу производительность на 50 % и сокращает количество кликов мышью каждый день!
    Вы гость
    или опубликуйте как гость, но ваше сообщение не будет опубликовано автоматически.

    Я скопировал и вставил, как указано выше, но получаю сообщение об ошибке, ошибке компиляции, синтаксической ошибке, Sub Test() желтый, а многие коды красные. Кто-нибудь может мне помочь?

    Я немного новичок в написании кода VBA, поэтому прошу прощения, если это глупый вопрос. Но есть ли способ адаптировать это для использования с Excel на Mac? Я потратил несколько часов, пытаясь понять это, но у меня просто нет технических знаний.К сожалению, весь мой офис использует Mac, и этот код был бы очень полезен для моей команды, но в том виде, в котором он сейчас написан, похоже, он работает только в Windows.

    Добрый день, у меня была проблема, что для некоторых версий PDF с Word этот код иногда давал мне несколько (например, 4x) фактических номеров страниц. Мое решение состояло в том, чтобы найти строку в файле PDF, в которой фактически указаны номера страниц, и если это может быть кому-то полезно, я использовал эту подпрограмму:

    Функция GetPDFpag(File1 As String) As Long

    Const ForReading = 1, ForWriting = 2
    Dim FSO As Object
    Dim FileIn, FileOut, strTmp, strOut, Scheck As String
    Dim Nstart, Nstop As Long
    Dim K до тех пор, пока

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileIn = FSO.OpenTextFile(File1, ForReading, False, 0)

    'мы ищем первую строку со строкой "/Kids[" в которой количество страниц
    Scheck = "no"
    K = 1
    Выполнить до FileIn.AtEndOfStream или Scheck = "yes"
    K = K + 1
    strTmp = FileIn.readline
    If Len(strTmp) > 0 Then
    If InStr(1, strTmp, "/Count" , vbTextCompare) > 0 And InStr(1, strTmp, "/Kids[", vbTextCompare) > 0 Then
    strOut = strTmp
    Scheck = "yes"
    End If
    End Если
    Цикл

    If Scheck = "no" Then
    strOut = 0
    иначе
    Nstart = InStr(strOut, "/Count") + 7
    Nstop = InStr(strOut, " /Kids")
    Nstop = Nstop - Nstart
    strOut = Mid(strOut, Nstart, Nstop)
    End If

    GetPDFpag = Val(strOut)
    Установить FSO = Nothing
    Завершить функцию

    У меня есть таблица Excel со списком файлов pdf, xlsx и elm, расположенных в каталоге комнаты данных (с подкаталогами) в столбце "J"

    Код должен заполнить столбец "I" количеством страниц каждого файла .pdf и .xls (другие не нужны, cels должен оставаться пустым)

    Здравствуйте, у меня есть папка с несколькими вложенными папками. Как указать путь к родительской папке, не выбирая ее вручную.

    Необходимо подсчитать количество страниц в нескольких PDF-файлах без утомительного открытия каждого файла и подсчета страниц вручную?

    Добро пожаловать в PDFsam, бесплатный инструмент с открытым исходным кодом, который поможет вам подсчитывать страницы PDF, а также разделять и объединять файлы PDF.

    Доступный для Windows, Mac и Linux, PDFsam позволяет перетаскивать несколько PDF-файлов в интерфейс. Затем приложение создает отчет в виде электронной таблицы о количестве страниц и информации о каждом файле. Затем вы можете скопировать и вставить отчет в Excel или другие программы для работы с электронными таблицами.

    Мгновенная загрузка!

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

    Поиск

    Говорящая веб-страница

    Прочитайте о том, как случайная встреча между Мэри Гиллен и ее соседом Джоном привела к новой идее, которая может помочь людям со слабым зрением.

    ИЗ БЛОГА

    • НОВОСТИ ДОСТУПНОСТИ: Министерство юстиции выпустило руководство по доступности веб-сайтов в соответствии с ADA
    • ДОСТУПНОЕ СЛОВО: скачайте расширение для Chrome
    • ИНСТРУМЕНТ ТЕСТИРОВАНИЯ: SQLime – удобная для мобильных устройств игровая площадка SQLite
    • ТЕСТИРОВАНИЕ ДОСТУПНОСТИ: расширение taba11y для Chrome
    • ГРАФИЧЕСКИЙ ИНСТРУМЕНТ: удаление фона изображения
    • ДОСТУПНАЯ РАЗРАБОТКА: работает ли ваш код со вспомогательными технологиями?
    • ДОСТУПНЫЙ CSS: контрастная сетка EightShapes
    • ОТКРОЙТЕ ДЛЯ СЕБЯ: требования к видео для перевода на язык жестов
    • УЗНАЙТЕ: как американские переводчики жестового языка помогают глухим людям
    • ОТКРОЙТЕ ДЛЯ СЕБЯ: как выучить язык жестов

    Мгновенная загрузка

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

    Подписаться

    Еженедельное обновление советов по специальным возможностям

    Получайте еженедельную рассылку новостей по электронной почте с последней версией WCAG 2.1 новости,
    обновления и руководства для веб-разработчиков,
    дизайнеров и создателей контента.

    Пользовательский класс

    Связаться с Мэри

    Адрес
    197M Boston Post Road West, Suite 194, Marlborough, MA 01752

    Давайте общаться

    © 2021 Мэри Гиллен. Все права защищены. Заявление о доступности

    Еженедельное обновление доступного веб-сайта

    Получайте еженедельную рассылку по электронной почте с последними новостями WCAG 2.1,
    обновлениями и учебными пособиями для
    веб-разработчиков, дизайнеров и создателей контента.

    Из блога

    • НОВОСТИ ДОСТУПНОСТИ: Министерство юстиции выпустило руководство по доступности веб-сайтов в соответствии с ADA
    • ДОСТУПНОЕ СЛОВО: скачайте расширение для Chrome
    • ИНСТРУМЕНТ ТЕСТИРОВАНИЯ: SQLime – удобная для мобильных устройств игровая площадка SQLite
    • ТЕСТИРОВАНИЕ ДОСТУПНОСТИ: расширение taba11y для Chrome
    • ГРАФИЧЕСКИЙ ИНСТРУМЕНТ: удаление фона изображения
    • ДОСТУПНАЯ РАЗРАБОТКА: работает ли ваш код со вспомогательными технологиями?
    • ДОСТУПНЫЙ CSS: контрастная сетка EightShapes

    Связаться с Мэри

    Адрес

    197M Boston Post Road West, Suite 194, Marlborough, MA 01752

    © 2022 Мэри Гиллен. Все права защищены.

    Читайте также: