Я использую iText PDF 5.4 вместе с интерфейсом Java2D (холст java.awt.Graphics
), и у меня есть серьезная проблема с градиентами.Проблема производительности с градиентами Java2D и iText PDF
Я рисую много прямоугольных форм, краска которых составляет LinearGradientPaint
. Это приводит к большим файлам (например, 10 МБ) и пытается открыть результаты, например. Preview.app
приводит компьютер в общую сумму. Кажется, проблема связана с использованием памяти, потому что первые десятки коробок окрашиваются довольно быстро, а затем производительность несколько замедляется несколько раз, что означает, что для типичной страницы требуется> 10 минут для открытия.
Adobe Acrobat также работает медленно, но, по крайней мере, это занимает около 4 или 5 секунд вместо нескольких минут.
Является ли это ошибкой iText? Есть ли настройка или tweak в iText, который управляет представлением градиентов? Я предполагаю, что он разлагает их на сотни отдельных команд рисования вместо использования компонента прямого градиента (если это существует - я знаю, что он существует в SVG, но PDF я не знаю).
Состояние в том, что я остаюсь в awt.Graphics
, я не могу переписать мой код рендеринга, чтобы не использовать Java2D.
При использовании функции «родной PDF» iText вы можете часто создавать сложный графический объект только в нескольких строках. При использовании 'java.awt.Graphics' iText должен подчиняться множеству инструкций, запускаемых классом« Graphics »в Java. Я бы не назвал это ошибкой iText; вы сделали архитектурный выбор, и теперь вы платите цену за этот выбор. –
Итак, вы говорите, что нет возможности улучшить представление градиентов Java2D? Я полностью понимаю, что прямые объекты будут более эффективными, но обычно у меня есть Swing GUI и нет ресурсов для разработки каждой графической структуры в два раза. –
Ну, если вы не можете изменить способ 'java.awt.Graphics2D', тогда единственным способом было бы полностью переконфигурировать« PdfGraphics2D »iText. Мы не собираемся это делать. Мы всегда советовали использовать собственный PDF-файл и прибегать к 'PdfGraphics2D', если родной PDF-файл невозможен. –