gpt4 book ai didi

c# - 使用 iTextSharp 在 C# 中旋转 PDF

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

我正在使用以下函数将 pdf 分成两部分。

虽然它是拆分 pdf,但内容是颠倒的。如何将其旋转 180 度。

请帮忙。下面是相同的代码

private static void ExtractPages(string inputFile, string outputFile,
int start, int end)
{
// get input document
PdfReader inputPdf = new PdfReader(inputFile);

// retrieve the total number of pages
int pageCount = inputPdf.NumberOfPages;

if (end < start || end > pageCount)
{
end = pageCount;
}

// load the input document
Document inputDoc =
new Document(inputPdf.GetPageSizeWithRotation(1));

// create the filestream
using (FileStream fs = new FileStream(outputFile, FileMode.Create))
{
// create the output writer
PdfWriter outputWriter = PdfWriter.GetInstance(inputDoc, fs);
inputDoc.Open();

PdfContentByte cb1 = outputWriter.DirectContent;

// copy pages from input to output document
for (int i = start; i <= end; i++)
{
inputDoc.SetPageSize(inputPdf.GetPageSizeWithRotation(1));
inputDoc.NewPage();

PdfImportedPage page =
outputWriter.GetImportedPage(inputPdf, i);
int rotation = inputPdf.GetPageRotation(i);


if (rotation == 90 || rotation == 270)
{
cb1.AddTemplate(page, 0, -1f, 1f, 0, 0,
inputPdf.GetPageSizeWithRotation(i).Height);

}
else
{
cb1.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
}

}

inputDoc.Close();
}
}

最佳答案

我发现上述答案对于所有 4 个主要旋转都没有正确旋转。

下面是我正确处理 0、90、180 和 270 的代码。这已经通过在每个方向上旋转的 PDF 进行了测试。

var pageRotation = reader.GetPageRotation(currentPageIndex);
var pageWidth = reader.GetPageSizeWithRotation(currentPageIndex).Width;
var pageHeight = reader.GetPageSizeWithRotation(currentPageIndex).Height;
switch (pageRotation)
{
case 0:
writer.DirectContent.AddTemplate(importedPage, 1f, 0, 0, 1f, 0, 0);
break;

case 90:
writer.DirectContent.AddTemplate(importedPage, 0, -1f, 1f, 0, 0, pageHeight);
break;

case 180:
writer.DirectContent.AddTemplate(importedPage, -1f, 0, 0, -1f, pageWidth, pageHeight);
break;

case 270:
writer.DirectContent.AddTemplate(importedPage, 0, 1f, -1f, 0, pageWidth, 0);
break;

default:
throw new InvalidOperationException(string.Format("Unexpected page rotation: [{0}].", pageRotation));
}

关于c# - 使用 iTextSharp 在 C# 中旋转 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3579058/

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