使用AddTemplate旋转图像

时间:2013-08-28 11:54:23

标签: c# itextsharp

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

0 个答案:

没有答案