我正在使用带有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();
}
这意味着我必须创建一个新文件并在此新文件中旋转页面 有没有办法在不创建新文件的情况下在同一源文件中旋转页面? 感谢
答案 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()