Итак, вот моя проблема:
Мы используем FOP для создания «красивого» вывода отчета. Мы используем параметр pdf, если пользователю нужен файл, AWT для предварительного просмотра и параметр -print для их печати. Мы используем FOP 0.25.x, который, как я полностью понимаю, не является самой новой версией, но обновление до 0.95 кажется нетривиальной задачей, которую я не обязательно хочу выполнять.
Во всяком случае, один из наших пользователей заметил, что при печати удостоверений личности (сгенерированных с помощью опции FOP -print) на принтере удостоверений личности изображения на карточках (изображения сотрудников) имели некоторые повреждения... как зеленые и красные точки и линии. Мы также обнаружили, что если мы отправляем точно такой же запрос на печать на один из наших цветных лазерных принтеров HP, он печатает нормально. Чтобы добавить к странности, если мы используем FOP для создания PDF-файла удостоверения личности, а затем распечатываем его через Acrobat Reader на карточном принтере, он печатается нормально.
В конце концов я обнаружил, что это как-то связано с масштабированием изображений... мы масштабировали изображения высотой 600 пикселей примерно до 120 пикселей. Если я уменьшал размер изображений, даже просто уменьшая их вдвое, искажение заметно уменьшалось. Точно так же, когда я увеличивал изображения, коррупция увеличивалась.
Итак, мой вопрос: кто-нибудь знает, что здесь происходит? Или когда-нибудь сталкивался с таким?
Поскольку я не знаю, почему это происходит, я не знаю, как исправить основную причину, но я работал над некоторыми различными обходными путями:
1) Используйте FOP для создания PDF-файла изображения, а затем распечатайте его через Java. Это кажется очевидным ответом, но некоторые поиски в Google показали, что печать PDF-файла через Java нетривиальна. Я видел проект PDF Renderer на java.net, но он кажется довольно громоздким для одного очень конкретного приложения.
2) Попробуйте изменить размер изображения, прежде чем отдать его в FOP. Это также казалось довольно простым, однако наши различные пользователи могут настраивать таблицы стилей для этих удостоверений личности, как они хотят, и использование в них размеров «pt» и «in» кажется довольно распространенным... Я не знаю ни одного хорошего способа сопоставьте это с изменением размера пикселя.
Если у кого-то есть понимание первопричины, способов заставить эти обходные пути работать и / или другая идея, вы будете в моем долгу.