使用iTextSharp
,我想在 PDF 上盖章并使其透明。邮票上有彩色文字(各种颜色),当整个图像透明时变得难以阅读,所以我不想让彩色文字透明 - 只有邮票矩形中的白色背景。
基于这个答案,我尝试了以下代码:
public void addImage(PdfDictionary oldAnnot, string imagePath,
int pageNumber,iTextSharp.text.Rectangle someRectangle) {
Stream inputImageStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read, FileShare.Read);
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(inputImageStream);
PdfAnnotation pdfStamp = PdfAnnotation.CreateStamp(pdfStamper.Writer, someRectangle, null, Guid.NewGuid().ToString());
image.SetAbsolutePosition(0, 0);
PdfAppearance app = pdfStamper.GetOverContent(pageNumber).CreateAppearance(image.Width, image.Height);
app.SaveState();
PdfGState state = new PdfGState();
state.FillOpacity = 0.1f;
app.SetGState(state);
app.AddImage(image);
app.RestoreState();
pdfStamp.SetAppearance(PdfName.N, app);
pdfStamp.SetPage();
pdfStamper.AddAnnotation(pdfStamp, pageNumber);
}
但是,这会使图像的彩色部分变得半透明。如何仅使图像的空白背景透明而使彩色部分不透明?
谢谢。