2011-10-24 31 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

我不認爲這是一個編輯functionnality本身,無論是在iTextSharp的也不在iText的。我認爲要走的路是打開現有文檔,創建一個新的作家,將舊文檔複製到新作家,同時添加您想要查看的豐富內容,並在之後覆蓋原始文檔,如here所述。

+0

嗨蒂姆,這是我找到上面的代碼 - 爲我自己使用略有改變。謝謝你的迴應 –

相關問題