使用 iTextSharp 合并不同方向的 PDF

Merging PDFs with different orientations with iTextSharp

我有两个方向不同的 PDF 文件(第一个文档是 A4 格式,第二个是 A4 横向)。 我想合并它们,但我需要保留每个页面的原始方向。

我尝试使用以下代码进行旋转:

  float width = pdfImportedPage.Width;
  float height = pdfImportedPage.Height;

  if (width > height)
  {
      PdfDictionary pageDict = reader.GetPageN(documentPage);
      pageDict.Put(PdfName.ROTATE, new PdfNumber(270));
  }

旋转后我调用 AddPage 方法如下:

copy.AddPage(pdfImportedPage);

但结果是一个 A4 格式的文档,第二部分的文本超出了页面。如果第二部分的文本是水平的,对我来说很好,但我还需要页面的方向与原始文档相同(水平)。

我使用的是 iTextSharp 5.5.13 版。

我刚刚发现问题出在代码的另一部分,在那之后,当我添加页码时。 顺便说一下,保持页面方向的一个好方法是使用 SetPageSize 和 NewPage 方法,就像这段代码:

for (int page = 1; page <= reader.NumberOfPages; page++)
{   
    copy.RotateContents = true;
    doc.SetPageSize(reader.GetPageSizeWithRotation(page));
    doc.NewPage();
    importedPage = copy.GetImportedPage(reader, page);  
    copy.AddPage(importedPage);
}