Почему cups-pdf иногда создает действительный файл PDF, но обычно нет?

Вопрос или проблема

У cups-pdf есть известная проблема: текст невозможно найти или скопировать из сгенерированных PDF файлов. Я тестировал cups-pdf в контейнерах Docker на основе Debian, Ubuntu и CentOS. Я заметил, что тестовая страница печати выдает корректный PDF файл только на Ubuntu. Под корректным PDF я имею в виду PDF файл, содержащий текст, который можно скопировать или найти.

Я создаю PDF-принтер, выполняя:

lpadmin -p p1 -v cups-pdf:/p1 -E -P /usr/share/ppd/cups-pdf/CUPS-PDF_opt.ppd

На CentOS:

lpadmin -p p1 -v cups-pdf:/p1 -E -P /usr/share/cups/model/CUPS-PDF_opt.ppd

Если я печатаю текстовый файл, я получаю некорректный PDF на всех Linux (Debian, CentOS, Ubuntu).

lp -d p1 file.txt

Мне интересно, почему печать тестовой страницы генерирует корректный PDF файл только на Ubuntu. Тестовые страницы расположены в /usr/share/cups/data. Команда для печати тестовой страницы:

lp -d p1 /usr/share/cups/data/testprint

testprint — это текстовый файл, который содержит некоторые инструкции и использует default-testpage.pdf в качестве шаблона. В CentOS другой default-testpage.pdf, чем в Ubuntu. Я не проверял Debian.

testprint:

#PDF-BANNER
Template default-testpage.pdf
Show printer-name printer-info printer-location printer-make-and-model printer-driver-name printer-driver-version paper-size imageable-area job-id options time-at-creation time-at-processing

Я заменил директорию /usr/share/cups/data в Ubuntu на директорию /usr/share/cups/data из CentOS. Ubuntu напечатал некорректный PDF. Я также заменил директорию /usr/share/cups/data в CentOS на директорию /usr/share/cups/data из Ubuntu. CentOS напечатал корректный PDF. Это говорит о том, что различия между default-testpage.pdf значительны. Я не понимаю, почему cups-pdf печатает корректные PDF файлы только в одном случае, а именно при печати тестовой страницы на Ubuntu. Этот случай доказывает, что cups-pdf может печатать корректные PDF. Как напечатать другие файлы (текстовые файлы и другие), чтобы получить корректные PDF файлы?

Ответ или решение

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

Возможные причины

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

  2. Шаблоны тестовых страниц: Вы правильно заметили, что в разных дистрибутивах используются разные шаблоны default-testpage.pdf. Это может оказывать значительное влияние на форматирование и генерацию PDF, так как различные шаблоны могут по-разному обрабатывать шрифты, текст и графику.

  3. Управление шрифтами: В Ubuntu, возможно, установлены определенные шрифты, которые отсутствуют в других системах. Если CUPS-PDF не может найти нужные шрифты в системе, он может генерировать PDF с проблемами с текстом.

  4. Настройки CUPS и PPD: Конфигурации принтера и файлы PPD (PostScript Printer Description) могут отличаться между дистрибутивами. Они влияют на то, как CUPS обрабатывает задания на печать. Нам нужно убедиться, что правильные параметры установлены в файле PPD, который используется.

  5. Драйверы и библиотеки: Установка и наличие необходимых библиотек для работы с PDF (например, Ghostscript) могут различаться.

Возможные решения

  1. Проверка версий и обновлений: Убедитесь, что у вас установлены последние версии CUPS и CUPS-PDF на всех дистрибутивах. Обновление программного обеспечения может исправить некоторые проблемы.

  2. Использование одного и того же PPD: Попробуйте использовать один и тот же файл PPD на всех дистрибутивах. Например, вы можете попробовать скопировать PPD файл из Ubuntu в Debian и CentOS и убедиться, что настройки совпадают.

  3. Изменение шрифтов: Убедитесь, что на всех системах установлены одинаковые шрифты и их версии. Это может помочь избежать проблем с потерей текста.

  4. Проверка Ghostscript: Убедитесь, что Ghostscript установлен и корректно настроен, так как он часто используется для обработки PDF из CUPS-PDF.

  5. Тестирование различных текстовых файлов: Попробуйте создавать текстовые файлы с различными шрифтами и форматированием, чтобы определить, не связано ли это с конкретным файлом или содержанием, которое вы печатаете.

  6. Использование различных методов: Попробуйте печатать из других приложений или использовать команду lpr вместо lp, чтобы узнать, сохраняется ли проблема.

  7. Логи и отладка: Поскольку вы работаете в среде Docker, проверьте логи CUPS для выявления возможных ошибок. Используйте команду journalctl -u cups для проверки логов служб.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...