使用Stamper添加渐变着色

时间:2014-12-09 23:42:37

标签: itextsharp

我的代码使用iTextSharp使用PdfStamper对象向现有 PDF文档添加各种彩色矩形,代码如下:

Dim reader As New PdfReader(byte_contets_of_PDF_file)
Dim stamper As New PdfStamper(reader, someOutputBuffer)
Dim under As PdfContentByte = stamper.GetUnderContent(pageNumber)
under.SetColorFill(BaseColors.RED)
under.Rectangle(x, y, rectWidth, rectHeight)
under.Fill()

这对于在现有PDF文档上绘制单色矩形很有效,但我希望我可以放置使用颜色渐变的矩形。

我的研究结果显示了使用PdfShadingPdfShadingPattern个对象的示例,但这些对象需要PdfWriter。据我了解,PdfWriter用于创建新PDF而不是用于更新现有PDF。

是否可以将矩形添加到具有渐变的现有PDF文档?

由于

1 个答案:

答案 0 :(得分:0)

我假设您已阅读此问题的答案:How to add a shading pattern to a custom shape

我认为您的问题是您不知道使用哪个参数而不是writer

如果是这种情况,请使用'stamper.GetOverContent(p)'代替writer.DirectContent并使用stamper.Writer代替writer

int p = 1; // or whatever page number applies
PdfContentByte canvas = stamper.GetOverContent(p);
float x = 36;
float y = 740;
float side = 70;
PdfShading axial = PdfShading.SimpleAxial(writer, x, y,
    x + side, y, BaseColor.PINK, BaseColor.BLUE);
PdfShadingPattern shading = new PdfShadingPattern(axial);
canvas.SetShadingFill(shading);
canvas.MoveTo(x,y);        
canvas.LineTo(x + side, y);
canvas.LineTo(x + (side / 2), (float)(y + (side * Math.sin(Math.PI / 3))));
canvas.ClosePathFillStroke();