Image iTextSharp超宽图像水平显示在多个页面中
我对iTextSharp有问题。我有一个20000x1000的图像,我必须把它放在一个PDF中,页面大小为A1水平。棘手的是,我需要将图像的高度调整为PDF格式,并相对于图像打印多页宽 我试过了,但它生成了一个PDF,只有一页,图像的宽度和高度都进行了调整Image iTextSharp超宽图像水平显示在多个页面中,image,pdf,itext,Image,Pdf,Itext,我对iTextSharp有问题。我有一个20000x1000的图像,我必须把它放在一个PDF中,页面大小为A1水平。棘手的是,我需要将图像的高度调整为PDF格式,并相对于图像打印多页宽 我试过了,但它生成了一个PDF,只有一页,图像的宽度和高度都进行了调整 Rectangle pageSize = PageSize.A1; Document doc = new Document(pageSize.Rotate(), 10f, 10f, 10f, 10f); PdfWriter writer =
Rectangle pageSize = PageSize.A1;
Document doc = new Document(pageSize.Rotate(), 10f, 10f, 10f, 10f);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:\TestFiles\Default.pdf", FileMode.Create));
doc.Open();
Image image = Image.GetInstance(@"C:\TestFiles\image.png");
PdfPTable table = new PdfPTable(1);
table.WidthPercentage = 100;
PdfPCell c = new PdfPCell(image, true);
c.Border = PdfPCell.NO_BORDER;
c.Padding = 5;
c.Image.ScaleAbsoluteHeight(pageSize.Height);
table.AddCell(c);
doc.Add(table);
doc.Close();
提前感谢您的帮助。使用表格不是满足您需求的方法 首先,让我们看看如何缩放图像,使高度适应旋转的A1文档的高度:
Image image = Image.GetInstance(@"C:\TestFiles\image.png");
image.ScaleToFit(image.ScaledWidth, PageSize.A1.Width);
ScaleToFit()
方法缩放图像,使其适合矩形。在这种情况下,我们不希望宽度减小,因此我们将该矩形的宽度定义为等于原始图像的宽度。我们确实希望缩放高度,使其适合旋转A1页面的高度。旋转A1页面时,必须使用PageSize.A1.Width
而不是PageSize.A1.Height
- 假设您有一个尺寸为500 x 1500的图像,那么缩放图像的大小将为500 x 2000,因为该图像适合一个500 x 1684的矩形
- 假设您有一个尺寸为500 x 2000的图像,则缩放后的图像将为421 x 1684。高度将减小以适合旋转的A1页面,宽度将相应减小
- 假设您的图像为5000 x 2000,则缩放后的图像将为4210 x 1684
Float offset = 0;
while (offset <= img.ScaledWidth) {
document.NewPage();
img.SetAbsolutePosition(-offset, 0);
document.Add(img);
offset += PageSize.A1.HEIGHT;
}
Float offset=0;
while(offset)