2015-12-28 2 views
1

Я хочу добавить следующее изображение PNG в мой PDF:IText - добавить изображение PNG, без границы

Я использую следующий код, чтобы сделать это:

Image img = PngImage.getImage(filename); 
img.setBorder(Image.NO_BORDER); 
img.setAlignment(Element.ALIGN_CENTER); 
img.scaleAbsolute(width,height); 
document.add(img); 

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

Я хочу, чтобы удалить границу в формате PDF, но выше код, делает не делайте этого.

Я использую iText-2.1.5.

+0

(1) по умолчанию, iText не добавляет границы изображения. Если вы видите границу в любом случае, эта граница уже присутствует на изображении. Возможно, вы не видите это, глядя на изображение в другом зрителе, но оно есть! (2) вы используете iText 2.1.5. Эта версия датируется март 2009 года. Это почти 7 лет. Обновите [во избежание проблем] (http://developers.itextpdf.com/question/can-itext-217-or-earlier-be-used-commercially). –

+0

но это png-файл, и я открываю изображение в краске, но он не показывает какой-либо внешней границы, даже я пытаюсь обрезать и скопировать это изображение и вставить в другой редактор, но он не показывает внешнюю границу, но когда я добавляю через java в pdf то он показывает внешнюю границу. –

+0

У изображения * есть * есть граница, несмотря на то, что вы утверждаете. Однако: граница прозрачна, что может объяснить, почему вы делаете неправильное предположение. –

ответ

2

В комментариях я утверждал, что у вашего оригинального изображения есть граница. Вы утверждаете, что у него нет границы. Теперь, когда вы разделили изображение, мы можем проверить факты, чтобы узнать, кто прав.

Как оказалось, я был прав. Когда я открываю изображение в GIMP, я ясно вижу прозрачную границу:

enter image description here

Может быть, вы не видите, потому что вы смотрите на изображение в Paint или, может быть, вы считаете, «прозрачный» и " белый ", чтобы быть одного цвета. Очевидно, что это предположение неверно.

Я создал PDF, содержащий изображение, общий и когда я открываю этот PDF с помощью iText RUPS, я вижу что-то вроде этого:

enter image description here

PNG не поддерживается в ISO-32000-1 (ака PDF), поэтому программное обеспечение, которое хочет ввести PNG в файл PDF, должно преобразовать этот PNG в другой формат. В случае iText «нормальные» PNG преобразуются в растровое изображение с фильтром /FlateDecode.

В вашем случае у вас есть PNG с прозрачностью. В ISO-32000-1 прозрачные изображения всегда сохраняются как два изображения: у вас есть непрозрачное изображение (на моем снимке экрана, /Img1 с номером объекта 2) и маска изображения (на моем снимке экрана, /Img0 с номером объекта 1).

Если вы внимательно посмотрите на маску изображения (изображение, которое делает непрозрачное изображение прозрачным), вы увидите, что это черно-белое изображение, которое показывает очень маленькую границу. Это изображение показано на нижней правой панели, где указано «Стрим» (это то, где отображается поток изображения). Эта очень маленькая граница - это прозрачная рамка, которую мы также видим в GIMP (или других зрителей изображений, которые поддерживают прозрачные изображения).

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

Подведено: Вы утверждали, что у вашего изображения не было границы и что граница была добавлена ​​iText.Я доказал, что вы ошибаетесь: изображение делает имеет прозрачный border и iText правильно вводит эту прозрачную границу в качестве маски. Средство просмотра PDF показывает эту границу как линию нулевой ширины в соответствии с ISO-32000-1.

Вы можете решить вашу проблему, удалив прозрачную рамку в исходном изображении. Например: I сплющено изображение с использованием GIMP. В результате это изображение:

enter image description here

Это изображение уже не имеет прозрачную границу, а когда вы приведете его в PDF, никакой границы не показана, и маска не добавляется в PDF:

enter image description here

+0

Большое спасибо Бруно за быстрый ответ. Это была моя ошибка, я не думал об этом. –

+1

Не стесняйтесь принять ответ (нажмите кнопку «Принять» рядом с вопросом). –

Смежные вопросы