gpt4 book ai didi

c# - iTextSharp 如何将页面从横向旋转/切换为纵向

转载 作者:可可西里 更新时间:2023-11-01 03:08:16 25 4
gpt4 key购买 nike

我正在使用 iTextSharp 将多个 PDF 文件合并为一个 Pdf。我找到了一个 code sampletwo在网络上了解如何完成此任务。

它们都能正常工作,没有明显的问题,因为我能够将多个 PDF 文件合并为一个 PDF。

我确实遇到的问题是,我希望所有页面都是纵向的,因为一些 PDF 文件的页面是横向的,我希望将它们旋转为纵向。我不介意它们要么倒置要么侧放,但它们必须都是纵向的。

查看所列示例中的代码部分:

page = writer.GetImportedPage(reader, i);
rotation = reader.GetPageRotation(i);

始终将页面旋转值返回为 0(零),因此代码部分

if (rotation == 90 rotation == 270)
{
cb.AddTemplate(page, 0, -1f, 1f, 0, 0,
reader.GetPageSizeWithRotation(i).Height);
}

永远不会被执行(如果这是应该做的,旋转页面)。

因此,根据第一个代码示例 page = writer.GetImportedPage(reader, i) 链接中的代码,我将如何更改 page 的页面布局 从横向到纵向,在我使用 cb.AddTemplate... 将其添加到新合并的 PDF 文档之前?

附言。确定页面是横向还是纵向我使用下面的 code从 SO 获得(适用于上面的代码示例):

float pageXYRatio = page.Width / page.Height;
if (XYRatio > 1f)
{
//page is landscape
}
else
{
//page is portrait
}

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

我用过类似的东西。

cb.PdfDocument.NewPage();
PdfImportedPage page1 = writer.GetImportedPage(reader, i);

Rectangle psize = reader.GetPageSizeWithRotation(i);
switch (psize.Rotation)
{
case 0:
cb.AddTemplate(page1, 1f, 0, 0, 1f, 0, 0);
break;
case 90:
cb.AddTemplate(page1, 0, -1f, 1f, 0, 0, psize.Height);
break;
case 180:
cb.AddTemplate(page1, -1f, 0, 0, -1f, 0, 0);
break;
case 270:
cb.AddTemplate(page1, 0, 1.0F, -1.0F, 0, psize.Width, 0);
break;
default:
break;
}

关于c# - iTextSharp 如何将页面从横向旋转/切换为纵向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com