0

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

0 回答 0