旋转PDF页面

时间:2015-11-16 09:05:51

标签: c# pdf itextsharp

我正在使用带有iTextSharp的C#来旋转PDF文件中的页面,为此我使用此代码

filname = @"C:\tr\jbklk.pdf";
using (FileStream outStream = new FileStream(filname, FileMode.Create))
{
    iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(@"C:\tr\2.pdf");
    iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outStream);

    iTextSharp.text.pdf.PdfDictionary pageDict = reader.GetPageN(2);
    int desiredRot = 90; // 90 degrees clockwise from what it is now
    iTextSharp.text.pdf.PdfNumber rotation = pageDict.GetAsNumber(iTextSharp.text.pdf.PdfName.ROTATE);

    if (rotation != null)
    {
        desiredRot += rotation.IntValue;
        desiredRot %= 360; // must be 0, 90, 180, or 270
    }
    pageDict.Put(iTextSharp.text.pdf.PdfName.ROTATE, new iTextSharp.text.pdf.PdfNumber(desiredRot));

    stamper.Close();
}

这意味着我必须创建一个新文件并在此新文件中旋转页面 有没有办法在不创建新文件的情况下在同一源文件中旋转页面? 感谢

1 个答案:

答案 0 :(得分:0)

您可以为MemoryStream使用Stamper并覆盖源文件。

这是VB.NET中的一个例子:

Dim strYourPDFFileToRotate As String = "C:\tr\2.pdf"

Dim itsReader As New iTextSharp.text.pdf.PdfReader(System.IO.File.ReadAllBytes(strYourPDFFileToRotate))

Dim msOut As New System.IO.MemoryStream()

Dim itsStamper As New iTextSharp.text.pdf.PdfStamper(itsReader, msOut)

itsReader.GetPageN(1).Put(iTextSharp.text.pdf.PdfName.ROTATE, New iTextSharp.text.pdf.PdfNumber(90))

itsStamper.Close()
itsReader.Close()

System.IO.File.WriteAllBytes(strYourPDFFileToRotate, msOut.ToArray)

msOut.Close()