首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用iTextSharp在矩形中插入图像

如何使用iTextSharp在矩形中插入图像
EN

Stack Overflow用户
提问于 2018-01-19 13:17:16
回答 1查看 1.9K关注 0票数 1

这里尝试将图像放置在彩色矩形上,但是图像没有出现。

请提出任何答案。

这是我的密码:-

代码语言:javascript
复制
pcb.RoundRectangle(iXCoordinate + 5, iYCoordinate, 500, 100, 5);
pcb.SetRGBColorFill(198, 226, 255);
pcb.Fill();
pcb.RoundRectangle(iXCoordinate + 5, iYCoordinate, 500, 100, 5); pcb.Stroke();
pcb.ResetRGBColorFill();

pcb.BeginText();
pcb.SetFontAndSize(BaseFont.CreateFont(@"C:\Windows\Fonts\arial.ttf", BaseFont.CP1252, false), 10);
pcb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, sCustomerName, iXCoordinate + 30, iYCoordinate, 0); iYCoordinate -= 12;
pcb.EndText();

iTextSharp.text.Image myImage = iTextSharp.text.Image.GetInstance(@"D:\Maruti\Resources\logo.jpg");
myImage.SetAbsolutePosition(iXCoordinate + 410, iYCoordinate - 40);
myImage.ScaleAbsoluteHeight(35);
myImage.ScaleAbsoluteWidth(80);
doc.Add(myImage);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 09:46:44

在您的代码中,可以将表单和文本的直接绘图结合到页面内容流(使用最有可能从PdfContentByte pcb中检索到的DirectContent )和通过iText布局机制(使用Document doc)间接绘制图像。

以这种混合方式添加的元素不一定按照您在代码中添加它们的顺序出现在结果内容中。例如,在您的示例中,最后添加的图像(通过Document)实际上首先发生在内容流中,在您通过DirectContent添加的所有内容之前。因此,图像被(部分)覆盖在其后绘制的圆角矩形中。

通常,您可以通过只使用DocumentDirectContent在同一页面区域中绘图来防止这一点。例如,在您的示例中,您也应该将图像添加到DirectContent,而不是添加到Document。用于此替换

代码语言:javascript
复制
doc.Add(myImage);

通过

代码语言:javascript
复制
pcb.AddImage(myImage);

现在,您的所有绘图都是使用DirectContent完成的,图像是在圆角矩形之后绘制的,因此完全可见。

但是,在另一个代码上有两个注释:

  • 首先定义路径,然后设置填充颜色,然后填充路径: pcb.RoundRectangle(iXCoordinate + 5,iYCoordinate,500,100,5);pcb.SetRGBColorFill(198,226,255);pcb.Fill(); 严格地说,这会创建无效的内容流,因为PDF规范明确要求在路径定义和匹配路径绘制操作之间,可能只有一个裁剪路径操作符。不过,许多PDF查看器将接受无效的内容流。 因此,您应该在pcb.SetRGBColorFill之前提取pcb.RoundRectangle
  • 如果您想要笔画和填充相同的路径,您可以只定义路径一次并调用pcb.FillStroke(),而不是两次定义它,一次用Fill(),一次用Stroke()

因此,一种既简单又更正确的绘制表单的方法是

代码语言:javascript
复制
pcb.SetRGBColorFill(198, 226, 255);
pcb.RoundRectangle(iXCoordinate + 5, iYCoordinate, 500, 100, 5);
pcb.FillStroke();
pcb.ResetRGBColorFill();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48342020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档