@iText_Q

Как превратить фоновое изображение в водяной знак, изменив прозрачность?

Я хочу сделать фоновое изображение прозрачным с помощью iText.
Вот код изображения:
string root = Server.MapPath("~");
string parent = Path.GetDirectoryName(root);
string grandParent = Path.GetDirectoryName(parent);
string imageFilePath = parent + "/Images/logo.png";
iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath);
jpg.ScaleToFit(1700, 800);
jpg.Alignment = iTextSharp.text.Image.UNDERLYING;
jpg.SetAbsolutePosition(100, 250);
jpg.ScaleAbsoluteHeight(500);
jpg.ScaleAbsoluteWidth(500);


Как это сделать?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
@iText_A
Посмотрите пример BackgroundTransparent. Это вариант примера BackgroundImage

В своем коде вы добавляете Image к экземпляру Document. В этом нет ничего плохого, но если вы хотите сделать изображение прозрачным, нужно создать мягкую маску. Это нетрудно, но есть и более простой способ сделать фон прозрачным: добавьте изображение прямо к содержимому, а затем определите прозрачность с помощью PdfExtGState:

PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage());
ImageData image = ImageDataFactory.create(imgSrc);
canvas.saveState();
PdfExtGState state = new PdfExtGState();
state.setFillOpacity(0.6f);
canvas.setExtGState(state);
canvas.addImage(image, 0, 0, pageSize.getWidth(), false);

Вы можете сравнить результаты примеров выше и увидеть разницу.
Мой пример написан на Java, но его легко изменить для C#.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы