使用VS 2010,C#,iTextSharp
我通过打开各种现有PDF文档,从中提取图像并将其插入到新PDF文档中来创建PDF文档。我的问题是我正在尝试在新的PDF文档中旋转一些图像(取决于源图像的宽度和高度),以便最有效地利用新PDF文档中的空间(最终用于打印一组贴纸) )。查看输出文件时,贴纸似乎在旋转,但是贴纸的右手端从文档顶部消失,导致图像看起来是一个大的正斜杠/从文档的左下角到左上角。
不会旋转图像的原始代码(并且它可以正常工作)
图像的x,y(sourceXStart,sourceYStart)坐标是动态计算的
现有代码 - 无旋转 - 并且完美运行
if ((sourceXStart + pdfInReader.GetPageSizeWithRotation(1).Width + 10) >= (thePageWidth - 5))
{
sourceXStart = 5;
sourceYStart = sourceYStart + lastHeight + 30;
lastHeight = 0;
}
cb.AddTemplate(page, sourceXStart, sourceYStart); // Add the image
sourceXStart = sourceXStart + pdfInReader.GetPageSizeWithRotation(1).Width + 10;
if (pdfInReader.GetPageSizeWithRotation(1).Width > lastHeight)
{ // Note the maximum height of any sticker in the row
lastHeight = pdfInReader.GetPageSizeWithRotation(1).Width;
}
新规范 - 根据宽度和宽度尝试旋转90度。高度
if (pdfInReader.GetPageSizeWithRotation(1).Width < pdfInReader.GetPageSizeWithRotation(1).Height) // Tall Stickers
{ // First we need to check if this image will fit in the width of the page
if ((sourceXStart + pdfInReader.GetPageSizeWithRotation(1).Height + 10) >= (thePageWidth - 5))
{
sourceXStart = 5;
sourceYStart = sourceYStart + pdfInReader.GetPageSizeWithRotation(1).Width + 30;
lastHeight = 0;
}
cb.AddTemplate(page, 0, -1f, 1f, sourceXStart, sourceYStart, pdfInReader.GetPageSizeWithRotation(1).Width);
sourceXStart = sourceXStart + pdfInReader.GetPageSizeWithRotation(1).Width + 5;
if (pdfInReader.GetPageSizeWithRotation(1).Width > lastHeight)
{
lastHeight = pdfInReader.GetPageSizeWithRotation(1).Width;
}
}