使用 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;
}
}