Добре, ето го моят проблем:
Ние използваме FOP за създаване на "красив" отчет. Използваме опцията pdf, ако потребителят иска файл, AWT за предварителен преглед и опцията -print за отпечатването им. Използваме FOP 0.25.x, за който напълно разбирам, че не е най-новата версия, но надграждането до 0.95 изглежда нетривиална задача, която не искам непременно да предприема.
Както и да е, беше забелязано от един от нашите потребители, че при отпечатването на лични карти (генерирани чрез FOP -опция за печат) на принтера за лични карти, изображенията на картите (снимки на служителите) са имали известна повреда в тях... нещо като като зелени и червени точки и линии. Открихме също, че ако изпратим точно същата заявка за печат до един от нашите цветни лазерни принтери на HP, тя се отпечатва добре. За да добавим към странността, ако използваме FOP, за да създадем PDF на личната карта и след това да го отпечатаме чрез acrobat reader на принтера за карти, той се отпечатва добре.
В крайна сметка открих, че има нещо общо с мащабирането на изображенията...мащабирахме изображения с височина 600px до нещо като 120px. Ако намалях изображенията, дори само да ги наполовина, повредата намаля значително. По същия начин, когато увеличих изображенията, корупцията се увеличи.
Та въпросът ми: някой има ли идея какво става тук? Или някога се е сблъсквал с подобно нещо?
Тъй като не знам защо се случва това, не знам как да поправя основната причина, но работих чрез някои различни решения:
1) Използвайте FOP, за да създадете pdf на изображението и след това да го отпечатате чрез Java. Това изглежда като очевиден отговор, но малко търсене в Google показа, че отпечатването на PDF чрез Java не е тривиално. Виждал съм проекта PDF Renderer на java.net, но изглежда доста обемист за едно много специфично приложение.
2) Опитайте се да преоразмерите изображенията, преди да ги дадете на FOP. Това също изглеждаше доста лесно, но нашите различни потребители могат да настройват таблици със стилове за тези идентификационни карти, както искат, и използването на "pt" и "in" оразмеряване в тях изглежда доста често срещано... Не знам за добър начин за съпоставете това с преоразмеряване на пиксел.
Ако някой има някаква представа за първопричината, начините да накарам тези решения да работят и/или друга идея, ще бъдете мой дълг.