Как узнать количество страниц в 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 легко справляется с этой скучной работой, автоматически подсчитывая количество страниц.
Если вам просто нужно посмотреть, сколько страниц в том или ином документе, вы можете просто открыть программу, нажать на нужную папку с вашими документами. Вы увидите таблицу с именами файлов, номерами страниц, размером и другой информацией для каждого документа. Вы можете установить конкретные характеристики, которые хотите видеть в этом списке. Если вам нужно создать отчет для этой информации, выполните следующие действия:
<УЛ>Если вам нужно экспортировать только количество страниц, вы должны установить поле 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 Мэри Гиллен. Все права защищены.
Читайте также: