iTextSharp有问题。我的图像为20000x1000,我必须将其放入PDF格式,页面大小为A1水平。棘手的是我需要将图像的高度调整为PDF并打印相对于图像的多个页面。
我试过这个,但它生成一个单页的PDF,图像调整了宽度和高度。
{{1}}
提前感谢您的帮助。
答案 0 :(得分:2)
使用表格不是满足您要求的方式。
首先让我们看一下如何缩放图像,使高度适应旋转的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
。
现在我们必须根据需要多次添加相同的图像,直到呈现完整的图像。请注意,图像字节仅在PDF中存储一次:这些字节将重复用于每个页面。
Float offset = 0;
while (offset <= img.ScaledWidth) {
document.NewPage();
img.SetAbsolutePosition(-offset, 0);
document.Add(img);
offset += PageSize.A1.HEIGHT;
}
上面的代码片段会发生什么?在第一页上,我们在位置(0, 0)
处添加图片,这意味着图片的左下角将与页面的左下角重合。
如果图片适合页面,例如如果宽度缩放小于新偏移量(2384
),则不会触发新页面。如果图像不适合页面(例如,因为缩放宽度是4210,其大于2384)将创建新页面,并且将添加具有新偏移的相同图像(例如(-2384, 0)
)。
假设缩放图像的宽度确实是4210并且页面的宽度是2384,那么添加第二页之后的偏移将是4768.这大于4210,因此将没有第三页。