Главная
» PC Советы
»
Пакетное преобразование файлов DOCX в PDF с помощью LibreOffice CLI
Пакетное преобразование файлов DOCX в PDF с помощью LibreOffice CLI
Если у вас есть папка с файлами Word, LibreOffice может преобразовать их одной командой. Из папки, содержащей файлы DOCX, создайте пустую выходную папку и запустите команду libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx. При этом будет использован фильтр экспорта в PDF в Writer, а оригиналы останутся на месте.
Используйте чистую папку для сохранения результатов, убедитесь, что LibreOffice установлен, и проверьте полученные PDF-файлы, а не рассматривайте успешное завершение команды как доказательство того, что каждая страница выглядит правильно. Командная строка — это практичный инструмент для пакетной обработки; она не гарантирует идентичную нумерацию страниц, как в Microsoft Word, и не восстанавливает поврежденные документы.
Выполните простое пакетное преобразование
В Linux откройте терминал в каталоге, содержащем файлы. Сначала создайте выходной каталог:
mkdir -p pdf
libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx
--headlessЗапускается без открытия обычного окна рабочего стола. --convert-toВыбирает PDF в качестве целевого формата; writer_pdf_Exportзадает имя фильтра экспорта PDF в LibreOffice Writer; и --outdir pdfотправляет результаты в pdfпапку. Оболочка расширяется *.docxдо соответствующих файлов перед запуском LibreOffice. LibreOffice описывает этот синтаксис преобразования и имя фильтра в своем справочнике параметров командной строки и списке фильтров преобразования файлов .
Пример вывода терминала после отправки небольшой партии файлов DOCX в LibreOffice с использованием фильтра экспорта PDF в Writer.
Выберите правильный шаблон партии
Использование подстановочного знака в команде лучше всего подходит, когда все файлы DOCX находятся непосредственно в одной входной папке. Она не выполняет поиск в дочерних папках. В Linux шаблон по умолчанию чувствителен к регистру, поэтому *.docxможет пропускать файлы, заканчивающиеся на .DOCX. Если оболочка сообщает, что шаблон не совпал, выведите список файлов и проверьте их расширения, прежде чем изменять команду.
Для документов, вложенных в подпапки, цикл может сохранить структуру каталогов и избежать конфликтов, когда две папки содержат файл с одинаковым именем. Установите значение inputдля исходного дерева и pdfдля отдельного целевого дерева:
-print0Функция сопоставления read -d ''безопасно обрабатывает пробелы и большинство необычных символов в именах файлов. Отдельный профиль предотвращает конкуренцию этого пакетного задания с сеансом LibreOffice на настольном компьютере, использующим тот же пользовательский профиль; см. справочные документы запуска LibreOffice -env:UserInstallation. Используйте уникальный путь к профилю, если одновременно могут выполняться два задания преобразования. Размещайте дерево выходных данных вне дерева входных данных, чтобы поиск не отклонялся от предыдущих результатов.
Пример рекурсивного цикла поиска, записывающего PDF-файлы в подпапку pdf рядом с каждой исходной папкой, что позволяет разделять файлы с одинаковыми именами в разных папках.
Когда LibreOffice уже открыт
Команда может завершиться без создания файлов или подключиться к существующему процессу LibreOffice. В запущенном экземпляре рабочего стола может использоваться профиль пользователя по умолчанию. Закройте LibreOffice и повторите попытку; для задач, выполняемых в автоматическом режиме, -env:UserInstallationполезной мерой предосторожности является опция изоляции в рекурсивном примере. Для каждой параллельно выполняемой задачи назначьте отдельный каталог профиля и дождитесь завершения одной задачи, прежде чем повторно использовать этот каталог.
Если команда выдает ошибку libreoffice: command not found, установите LibreOffice через поддерживаемый вашей операционной системой источник пакетов или используйте полный путь к исполняемому файлу. В Windows PowerShell простой нерекурсивный пакетный файл можно написать следующим образом:
Если LibreOffice установлен в другом месте, внесите необходимые изменения $soffice. Запустите команду из исходной папки и используйте новую папку для вывода. PowerShell Get-ChildItem -Fileвыполняет поиск только в этой папке, если не запрошена рекурсия; для рекурсивных заданий необходим цикл, создающий соответствующую папку назначения для каждого пути к исходному файлу.
Что может повлиять на результат?
Преобразование в PDF сохраняет структуру, которую может интерпретировать LibreOffice, но Word и LibreOffice не всегда одинаково нумеруют страницы документов. Отсутствие шрифтов, неподдерживаемые встроенные объекты, отслеживаемые изменения, поля или сложные таблицы могут смещать переносы строк и количество страниц. Для обеспечения единообразия типографики установите необходимые для документов шрифты перед преобразованием. Защищенные или зашифрованные паролем файлы, возможно, потребуется открывать с учетными данными или обрабатывать вручную, а поврежденный файл DOCX может сам по себе завершиться с ошибкой, даже если другие файлы будут преобразованы.
Не запускайте пакетную обработку повторно в папку, содержащую ценные PDF-файлы с совпадающими именами. Используйте чистое место назначения или сначала сделайте резервную копию существующих результатов. Если какой-либо файл особенно важен, откройте его в LibreOffice Writer и проверьте его, прежде чем полагаться на PDF-файл. Если точная нумерация страниц Microsoft Word является обязательным требованием, LibreOffice может не подойти; сравните с репрезентативным образцом в приложении, определяющем требуемую структуру.
Пример команды, использующей отдельный профиль пользователя LibreOffice для автоматического выполнения преобразования.
Перед тем как делиться результатом, проверьте его.
Сначала сравните количество исходных файлов с количеством PDF-файлов. В Linux эти команды подсчитывают количество файлов в папке с плоским содержимым:
find . -maxdepth 1 -type f -iname '*.docx' | wc -l
find pdf -maxdepth 1 -type f -iname '*.pdf' | wc -l
Для рекурсивного преобразования сравните количество совпадений по всем входным и выходным деревьям. Совпадение количества совпадений — это полезная проверка, а не гарантия качества: поврежденный документ или перезаписанный дубликат все равно могут потребовать проверки. Проверьте журнал терминала на наличие ошибок и убедитесь, что каждое ожидаемое имя файла присутствует в целевом файле.
Проверьте репрезентативные PDF-файлы в программе для просмотра PDF-файлов. Проверьте первую и последнюю страницы, количество страниц, поля, таблицы, верхние и нижние колонтитулы, изображения и любые важные разрывы страниц. Если pdfinfoпрограмма установлена, pdfinfo pdf/Report.pdfона предоставляет метаданные, такие как количество страниц и размер страницы; она не оценивает визуальное качество. Повторно конвертируйте файлы только после исправления конкретной проблемы, например, установки отсутствующего шрифта или изменения выходного каталога, а затем снова просмотрите затронутые PDF-файлы.
Пример окна проверки, отображающего метаданные PDF-файла, такие как количество страниц и размер бумаги.
Пакетная обработка считается завершенной, когда все необходимые PDF-файлы существуют, открываются без ошибок, а важные страницы сохраняют заданную структуру. Для больших архивов сохраняйте исходные DOCX-файлы и журналы преобразования, чтобы можно было отследить отдельную ошибку и повторно запустить процесс без замены несвязанных выходных данных.