我在缩放图片时遇到问题
这是我的问题。图像的红色边框不得与pdf页面的蓝色边框重叠我使用的图像尺寸为173 * 292
这是我的代码
using (MemoryStream ms = new MemoryStream())
{
Document doc = new Document(PageSize.A4, 10, 10, 20, 35);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(System.IO.Path.Combine(filepath, pdfLocation), FileMode.Create));
doc.AddTitle("Document Title");
doc.Open();
iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(strFilename);
image1.Alignment = iTextSharp.text.Image.ALIGN_CENTER;
image1.Border = iTextSharp.text.Rectangle.BOX;
image1.BorderWidth = 3.0f;
image1.BorderColor = iTextSharp.text.BaseColor.RED;
PdfContentByte content = writer.DirectContent;
iTextSharp.text.Rectangle rectangle = new iTextSharp.text.Rectangle(doc.PageSize);
rectangle.Left += doc.LeftMargin;
rectangle.Right -= doc.RightMargin;
rectangle.Top -= doc.TopMargin;
rectangle.Bottom += doc.BottomMargin;
content.SetColorStroke(iTextSharp.text.BaseColor.BLUE);
content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height);
content.Stroke();
float pageWidth = doc.PageSize.Width - (35 + 35);
float pageHeight = doc.PageSize.Height - (35 + 35);
image1.ScaleToFit(pageWidth, pageHeight);
image1.SetAbsolutePosition((PageSize.A4.Width - image1.ScaledWidth) / 2, (PageSize.A4.Height - image1.ScaledHeight) / 2);
doc.Add(image1);
doc.Close();
}
我认为我的代码正常运行。
下面的屏幕截图是我使用的尺寸为3000 * 2363的图像,图像边框与pdf尺寸的边框不重叠
答案 0 :(得分:1)
我认为问题出现是因为不同的值用于margin top和bot。然而,之后不再观察到这些。实际上,您计算整个页面和图像之间的剩余空间,然后将图像开始一半。由此忽略边界。只要边框大小相同(如左+右),这就可以工作。由于缩放,图像变得很小,以至于间接地再次考虑边缘。
要确定正确的开始,必须遵守边距:
image1.SetAbsolutePosition((PageSize.A4.Width - image1.ScaledWidth) / 2, (PageSize.A4.Height - doc.BottomMargin - doc.TopMargin - image1.ScaledHeight) / 2 + doc.TopMargin);
这意味着确定蓝色矩形内的剩余空间。这个的一半+上面的边距。如果一个人也区分左右,那么必须以同样的方式补充这些。