2011-10-24 4 views
3

私はiTextSharpで比較的簡単なことをしようとしていますが、私はいつも非常に混乱していると感じています。iTextSharp - ファイルを開き、PdfDestinationとPdfActionを保存する

私が使用するサードパーティ製の製品ではPDFが生成されますが、初期表示設定(ズーム、幅に合わせるなど)は設定できません。

私は、私はiTextSharpでこれを行うことができますいくつかのコードを発見した

: -

Developer Barn

私は仕事ができないビットが既に存在するファイルにこれを適用する方法である - これはいるようだが新しいファイルやiTextSharpで作成しているものであれば問題ありませんが、既存のPDFではできません。これをやり遂げる方法はありますか?どのようにそれを行うことができますか?

事前に多くのおかげで、

アダム

PSは - すでにこれに対する答えを見つけた... StackOverflowのは私はしかし自分の質問をクローズさせていないのだろうか?ビットダフトようだが、いずれにせよ、このようにそれを行う -

 PdfReader reader = new PdfReader(new FileStream(fileName, FileMode.Open, FileAccess.Read)); 
     Rectangle size = reader.GetPageSizeWithRotation(1); 

     using (Document document = new Document(size)) 
     { 
      using (PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Path.Combine(Path.GetDirectoryName(fileName), "Zoom" + Path.GetFileName(fileName)), FileMode.Create, FileAccess.ReadWrite))) 
      { 
       //open our document 
       document.Open(); 

       PdfContentByte cb = writer.DirectContent; 

       //this creates a new destination to send the action to when the document is opened. 
       PdfDestination pdfDest = new PdfDestination(PdfDestination.FITH, reader.GetPageSize(1).Top); 

       //create a new action to send the document to our new destination. 
       PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer); 

       for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++) 
       { 
        //need to change page size for landscape/portrait 
        document.SetPageSize(reader.GetPageSizeWithRotation(pageNumber)); 

        document.NewPage(); 
        PdfImportedPage page = writer.GetImportedPage(reader, pageNumber); 
        cb.AddTemplate(page, 0, 0); 
       } 

       //set the page mode 
       int PageMode = 0; 
       PageMode += PdfWriter.PageLayoutOneColumn; 


       //set the open action for our writer object 
       writer.SetOpenAction(action); 
       writer.ViewerPreferences = PageMode; 
       writer.SetFullCompression(); 

       //finally, close our document 
       document.Close(); 
      } 
     } 

答えて

3

私は、それ自体が、どちらもiTextSharpでもiTextの中に編集functionnalityがあるとは思いません。私は行くべき道は、既存の文書を開き、新しいライターを作成し、古い文書を新しい作家にコピーしながら、あなたが見たいと思う濃縮物を追加し、その後hereと書かれた元の文書を上書きすることだと思います。

+0

こんにちはTim、これは私が上記のコードを見つけた場所です。応答ありがとう –

関連する問題