Я использую iTextSharp для добавления изображений в pdf-документ.
Когда я добавляю рамку для изображения, я вижу часть изображения размером в один пиксель (посмотрите на Скриншот):
Это видно, когда я использую белый цвет для границы.
Как я могу это удалить?
Мой код
iTextSharp.text.Rectangle rec = new iTextSharp.text.Rectangle(PageSize.A4);
iTextSharp.text.Document document = new iTextSharp.text.Document(rec);
using (var writer = PdfWriter.GetInstance(document, new FileStream("file.pdf", FileMode.Create)))
{
document.Open();
iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance("picture.jpg");
pic.ScaleToFit(document.PageSize.Width, document.PageSize.Height);
pic.SetAbsolutePosition(0, (document.PageSize.Height - pic.ScaledHeight) / 2);
pic.Border = Image.LEFT_BORDER | Image.TOP_BORDER | Image.RIGHT_BORDER | Image.BOTTOM_BORDER;
pic.BorderWidthLeft = 20f;
pic.BorderWidthTop = 20f;
pic.BorderWidthRight = 20f;
pic.BorderWidthBottom = 20f;
pic.BorderColor = new iTextSharp.text.BaseColor(System.Drawing.Color.White);
document.Add(pic);
document.Close();
writer.Close();
}
Бруно, да, этот артефакт-бордюр тоже.
@Valeriy Имеет ли изображение встроенный цветовой профиль, как указано в Вставленные изображения имеют нежелательную границу или линии с одной или нескольких сторон.?
@ Эндрю Мортон, эта проблема есть на всех изображениях: .jpg, .png, .bmp. Интересно: если я использую borderWidth для каждой стороны отдельно (pic.BorderWidthLeft = 20f; pic.BorderWidthTop = 20f; ...), появляются некоторые артефакты. Но если я использую только pic.BorderWidth = 20f, то артефактов не будет! Я не понимаю этой проблемы
У вас есть пример PDF-файла, который вы можете загрузить, чтобы другие люди могли его изучить?





Это странно. Интересно, не артефакт ли это зрителя. Вы также видите эту однопиксельную рамку при печати документа?