Вопрос или проблема
У 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, это не так.
Возможные причины
-
Разные версии CUPS: Разные дистрибутивы могут использовать разные версии CUPS и драйверов. Некоторые версии могут содержать исправления или улучшенные функции для генерации PDF, которые отсутствуют в других версиях.
-
Шаблоны тестовых страниц: Вы правильно заметили, что в разных дистрибутивах используются разные шаблоны
default-testpage.pdf
. Это может оказывать значительное влияние на форматирование и генерацию PDF, так как различные шаблоны могут по-разному обрабатывать шрифты, текст и графику. -
Управление шрифтами: В Ubuntu, возможно, установлены определенные шрифты, которые отсутствуют в других системах. Если CUPS-PDF не может найти нужные шрифты в системе, он может генерировать PDF с проблемами с текстом.
-
Настройки CUPS и PPD: Конфигурации принтера и файлы PPD (PostScript Printer Description) могут отличаться между дистрибутивами. Они влияют на то, как CUPS обрабатывает задания на печать. Нам нужно убедиться, что правильные параметры установлены в файле PPD, который используется.
-
Драйверы и библиотеки: Установка и наличие необходимых библиотек для работы с PDF (например, Ghostscript) могут различаться.
Возможные решения
-
Проверка версий и обновлений: Убедитесь, что у вас установлены последние версии CUPS и CUPS-PDF на всех дистрибутивах. Обновление программного обеспечения может исправить некоторые проблемы.
-
Использование одного и того же PPD: Попробуйте использовать один и тот же файл PPD на всех дистрибутивах. Например, вы можете попробовать скопировать PPD файл из Ubuntu в Debian и CentOS и убедиться, что настройки совпадают.
-
Изменение шрифтов: Убедитесь, что на всех системах установлены одинаковые шрифты и их версии. Это может помочь избежать проблем с потерей текста.
-
Проверка Ghostscript: Убедитесь, что Ghostscript установлен и корректно настроен, так как он часто используется для обработки PDF из CUPS-PDF.
-
Тестирование различных текстовых файлов: Попробуйте создавать текстовые файлы с различными шрифтами и форматированием, чтобы определить, не связано ли это с конкретным файлом или содержанием, которое вы печатаете.
-
Использование различных методов: Попробуйте печатать из других приложений или использовать команду
lpr
вместоlp
, чтобы узнать, сохраняется ли проблема. -
Логи и отладка: Поскольку вы работаете в среде Docker, проверьте логи CUPS для выявления возможных ошибок. Используйте команду
journalctl -u cups
для проверки логов служб.
Заключение
Если проблема продолжает происходить, несмотря на предпринятые шаги, можно рассмотреть возможность использования других решений для генерации PDF, таких как libreoffice
, pandoc
или других инструментов, которые могут создать PDF файлы более надежно. Надеюсь, представленные здесь знания и подходы помогут вам решить вашу проблему с CUPS-PDF.