我正在使用 iTextSharp 将多个 PDF 文件合并为一个 Pdf。我找到了一个 code sample或 two在网络上了解如何完成此任务。
它们都能正常工作,没有明显的问题,因为我能够将多个 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/