В комментариях я утверждал, что у вашего оригинального изображения есть граница. Вы утверждаете, что у него нет границы. Теперь, когда вы разделили изображение, мы можем проверить факты, чтобы узнать, кто прав.
Как оказалось, я был прав. Когда я открываю изображение в GIMP, я ясно вижу прозрачную границу:
Может быть, вы не видите, потому что вы смотрите на изображение в Paint или, может быть, вы считаете, «прозрачный» и " белый ", чтобы быть одного цвета. Очевидно, что это предположение неверно.
Я создал PDF, содержащий изображение, общий и когда я открываю этот PDF с помощью iText RUPS, я вижу что-то вроде этого:
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. В результате это изображение:
Это изображение уже не имеет прозрачную границу, а когда вы приведете его в PDF, никакой границы не показана, и маска не добавляется в PDF:
(1) по умолчанию, iText не добавляет границы изображения. Если вы видите границу в любом случае, эта граница уже присутствует на изображении. Возможно, вы не видите это, глядя на изображение в другом зрителе, но оно есть! (2) вы используете iText 2.1.5. Эта версия датируется март 2009 года. Это почти 7 лет. Обновите [во избежание проблем] (http://developers.itextpdf.com/question/can-itext-217-or-earlier-be-used-commercially). –
но это png-файл, и я открываю изображение в краске, но он не показывает какой-либо внешней границы, даже я пытаюсь обрезать и скопировать это изображение и вставить в другой редактор, но он не показывает внешнюю границу, но когда я добавляю через java в pdf то он показывает внешнюю границу. –
У изображения * есть * есть граница, несмотря на то, что вы утверждаете. Однако: граница прозрачна, что может объяснить, почему вы делаете неправильное предположение. –