我正在尝试使用pdfstamper将横幅图片添加到现有pdf页面的底部。 我有它显示但我无法弄清楚如何让它对齐中心。
我的代码如下:
using (PdfStamper stamper = new PdfStamper(reader, ms, '\0', true))
{
var cropbox = reader.GetCropBox(1);
float left = cropbox.Left;
iTextSharp.text.Image bannerImage = iTextSharp.text.Image.GetInstance(bannerUrl);
var rectangle = new iTextSharp.text.Rectangle(5, 5, cropbox.Width-5, 50);
rectangle.Border = 0;
PdfAnnotation bannerStamp = PdfAnnotation.CreateStamp(stamper.Writer, rectangle, null, "footer");
bannerImage.SetAbsolutePosition(0, 0);
bannerImage.ScaleToFit(rectangle );
bannerImage.Alignment = Element.ALIGN_BOTTOM | Element.ALIGN_CENTER;
PdfContentByte cb = stamper.GetOverContent(1);
PdfAppearance app = cb.CreateAppearance(rectangle.Width, rectangle.Height);
app.AddImage(bannerImage);
bannerStamp.SetAppearance(PdfName.N, app);
bannerStamp.Flags = PdfAnnotation.FLAGS_PRINT;
stamper.AddAnnotation(bannerStamp, pageNum);
stamper.Close();
}
我很确定它与矩形和CreateAppearance有关(这里的数字是我图像的大小),但是我无法解决问题。
修改 根据评论,我更新了我的代码,以便我的矩形和pdfAppearance大小相同。我的问题仍然存在 -
如何将横幅图像与矩形对齐?
答案 0 :(得分:0)
我已经解决了! 您无法设置对齐,您必须设置绝对位置。这是现在的代码:
PdfReader reader = new PdfReader(srcFile);
using (MemoryStream ms = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(reader, ms, '\0', true))
{
var cropbox = reader.GetCropBox(1);
iTextSharp.text.Image bannerImage = iTextSharp.text.Image.GetInstance(bannerUrl);
var rectangle = new iTextSharp.text.Rectangle(5, 5, cropbox.Width-5, 50);
rectangle.Border = 0;
PdfAnnotation bannerStamp = PdfAnnotation.CreateStamp(stamper.Writer, rectangle, null, "footer");
bannerImage.ScaleToFit(rectangle );
bannerImage.SetAbsolutePosition((cropbox.Width - bannerImage.ScaledWidth)/2, 0); //align it center
PdfContentByte cb = stamper.GetOverContent(1);
PdfAppearance app = cb.CreateAppearance(rectangle.Width, rectangle.Height);
app.AddImage(bannerImage);
bannerStamp.SetAppearance(PdfName.N, app);
bannerStamp.Flags = PdfAnnotation.FLAGS_PRINT;
stamper.AddAnnotation(bannerStamp, pageNum);
stamper.Close();
}
return ms.ToArray();
}