剪切jpg iTextSharp.text.Image从顶部

时间:2016-04-21 11:04:03

标签: c# itextsharp

我需要从20像素的顶部剪切.jpg图像。

我有这个代码将图像与对象相关联:

iTextSharp.text.Rectangle rect = pdf.AcroFields.GetFieldPositions("BarCode")[0].position;
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(Application.StartupPath + segnacollo.BarCode);
img.ScaleAbsoluteHeight(rect.Height);
img.ScaleAbsoluteWidth(rect.Width);
img.SetAbsolutePosition(rect.Left, rect.Bottom);
pdf.GetOverContent(1).AddImage(img);

由于

1 个答案:

答案 0 :(得分:-1)

请查看问题How to give an image rounded corners?

的答案

在此示例中,我们剪切图像以使其变为圆角:

Image img = Image.GetInstance(some_path_to_an_image);
float w = img.ScaledWidth;
float h = img.ScaledHeight;
PdfTemplate t = writer.DirectContent.CreateTemplate(w, h);
t.Ellipse(0, 0, w, h);
t.Clip();
t.NewPath();
t.AddImage(img, w, 0, 0, h, 0, -600);
Image clipped = Image.GetInstance(t);

您想要删除图像顶部的一部分,您可以使代码更简单:

Image img = Image.GetInstance(some_path_to_an_image);
float w = img.ScaledWidth;
float h = img.ScaledHeight;
PdfTemplate t = writer.DirectContent.CreateTemplate(w, h - 20);
t.AddImage(img, w, 0, 0, h, 0, 0);
Image clipped = Image.GetInstance(t);

在这个例子中,我创建了一个PdfTemplate,它比原始图像小20个用户单位。我将原始图像添加到该模板,然后从该模板创建一个新图像。

重要事项:这可视化地剪裁图像,因为您无法在PDF中看到顶部条带(20个用户单位高)。但是,如果从PDF中提取图像,您将看到文档中存在完整的图像。