2013-07-25 10 views
7

Próbuję obrócić o 180 stopni PDF i używam biblioteki ITextSharp, aby to zrobić. Poniższy kod pochodzi z przykładów ich witryn. Jednak nie mogę znaleźć odpowiedniego obszaru nazw do zaimportowania, aby działał "FileOutputStream".Odpowiednik FileOutputStream

Jest to aplikacja konsolowa, więc nie mamy pewności, czy działa Java "FileOutpuStream".

PDFStamper() jest skonstruowany w następujący sposób:

PdfStamper (czytnik PDFReader, strumień O)

public void rotatePDF(string inputFile) 
     { 
      // get input document 

     PdfReader reader = new PdfReader(inputFile);   
     PdfName pdfName = new PdfName(inputFile); 
     int n = reader.NumberOfPages; 
     int rot; 
     PdfDictionary pageDict; 
     for (int i = 1; i <= n; i++) 
     { 
      rot = reader.GetPageRotation(i); 
      pageDict = reader.GetPageN(i); 
      pageDict.Put(PdfName.ROTATE, new PdfNumber(rot + 180)); 
     } 

     PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(inputFile)); 
     stamper.closer(); 
     reader.Close(); 


     } 
+0

spróbować File.Create (* outputfile *), aby rozpocząć nowy plik lub File.OpenWrite (* plik_wejściowy *) aby zastąpić oryginalny plik PDF. –

Odpowiedz

8

Spróbuj stosując FileStream. Jest w System.IO

PdfStamper stamper = new PdfStamper(reader, new FileStream(inputFile, FileMode.Create);); 
+0

Wygląda na to, że zadziała ... jednak, gdy dojdzie do tej linii, otrzymuję komunikat "Proces nie może uzyskać dostępu do pliku _____. Pdf, ponieważ jest używany przez inny proces." błąd. Jakaś pomoc z tym? – MaylorTaylor

+2

Zmień 'new PdfReader (inputFile)' na 'new PdfReader (new FileStream (inputFile, FileMode.Open))' – bebraham

+0

Generalnie polecam wyłącznie blokowanie pliku tylko w trybie tylko do zapisu: 'new FileStream (inputFile, FileMode.Create, FileAccess.Write, FileShare.None) ' –