我的代码使用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文档上绘制单色矩形很有效,但我希望我可以放置使用颜色渐变的矩形。
我的研究结果显示了使用PdfShading
和PdfShadingPattern
个对象的示例,但这些对象需要PdfWriter
。据我了解,PdfWriter
用于创建新PDF而不是用于更新现有PDF。
是否可以将矩形添加到具有渐变的现有PDF文档?
由于
答案 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();