gpt4 book ai didi

c# - 使用 ItextSharp 在 PDF 中的图像上绘制线条

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:36 24 4
gpt4 key购买 nike

我试图在需要加载到pdf文档的图像上画线,就像我们在任何控件的paint事件上绘制图形一样,但它没有这样做。

有什么建议吗?

Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);
pdfDoc.AddHeader("Batting Report - ", txtSearchBox.Text);

iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance(Properties.Resources.bgWW
, System.Drawing.Imaging.ImageFormat.Jpeg);


PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open();

pdfDoc.Add(pic);

那么,如何修改 ItextSharpImage 的 pic 对象,使其可以在图像上画线呢?

最佳答案

请看WatermarkedImages4例子。它基于 WatermarkedImages1我在评论中提到的例子。这两个示例之间唯一的不同是我们在示例中添加了文本以回答How to add text to an image?。而我们在示例中添加了一些行来回答您的问题。

我们这样添加图片:

document.add(getWatermarkedImage(cb, Image.getInstance(IMAGE1)));

getWatermarkedImage() 方法如下所示:

public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException {
float width = img.getScaledWidth();
float height = img.getScaledHeight();
PdfTemplate template = cb.createTemplate(width, height);
template.addImage(img, width, 0, 0, height, 0, 0);
template.saveState();
template.setColorStroke(BaseColor.GREEN);
template.setLineWidth(3);
template.moveTo(width * .25f, height * .25f);
template.lineTo(width * .75f, height * .75f);
template.moveTo(width * .25f, height * .75f);
template.lineTo(width * .25f, height * .25f);
template.stroke();
template.setColorStroke(BaseColor.WHITE);
template.ellipse(0, 0, width, height);
template.stroke();
template.restoreState();
return Image.getInstance(template);
}

如您所见,我使用 moveTo()lineTo()stroke() 添加了两条绿线。我还使用 ellipse()stroke() 方法添加了一个白色椭圆。

这会生成如下所示的 PDF:

enter image description here

正如你所看到的,椭圆的形状和线条的位置对于不同的图像是不同的,因为我根据图像的宽度和高度定义了我的坐标。

关于c# - 使用 ItextSharp 在 PDF 中的图像上绘制线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com