2017-08-01 56 views
0

我能夠複製的內容和編輯,但我沒有得到相同的模板,因爲舊的模板得到改變,從現有的PDF內容複製到一個新的PDF,我有一個像我舊文件和圖像也沒有得到複製到我的新文件的其他內容,其餘的都得到複製,C一有人幫助我,使我的新的PDF文件的模板,因爲舊的,這裏是我下面的代碼。使用iTextSharp的

public static void Main(string[] args) 
    { 
     var editedText = ExtractTextFromPdf(@"C:\backup_temp\Template.pdf"); 
     string outputfile [email protected]"C:\backup_temp\Result.pdf"; 
     using (var fileStream = new FileStream(outputfile, FileMode.Create, 
     FileAccess.Write)) 
     { 
      Document document = new Document(PageSize.A4, 25, 25, 30, 30); 
      PdfWriter writer = PdfWriter.GetInstance(document, fileStream); 
      document.Open(); 
      document.Open(); 
      document.Add(new Paragraph(editedText)); 
      document.Close(); 
      writer.Close(); 
      fileStream.Close(); 
     } 
    } 

    public static string ExtractTextFromPdf(string path) 
    { 
     using (PdfReader reader = new PdfReader(path)) 
     { 
      StringBuilder text = new StringBuilder(); 
      for (int i = 1; i <= reader.NumberOfPages; i++) 
      { 
      text.Append(PdfTextExtractor.GetTextFromPage(reader, i)); 
      text.Replace("[DMxxxxxxx]", "[DM123456]"); 
      } 
      return text.ToString(); 
     } 
    } 
+0

請閱讀我的回答評論的問題(HTTPS [從另一個PDF複製數據創建新的PDF]://計算器.COM /問題/ 45415907 /創建全新的PDF的逐複製數據從 - 另一個-PDF)。你正試圖實現一些不可能的事情。如果是同一個人作爲[kulbans1991(https://stackoverflow.com/users/5964772/kulbans1991),請注意,以一個新的身份張貼同樣的問題再一次不會改變答案。 –

+0

那麼是否有可能滿足我的任何其它方式的要求,這意味着我應該編輯從舊的PDF內容,並保存爲一個新的PDF文檔,我試圖用這麼多東西和方法,但它是不工作的。 –

+0

不,如果您只能訪問PDF,則無法以任何其他方式滿足您的要求。如果你有機會到原來的格式(例如Word文件,原始數據和用來產生你的PDF,...代碼),你應該改變這種原始格式,並重新創建PDF。 –

回答

0

布魯諾說,如果你的「模板」是另外一個PDF文檔,則無法實現一個簡單的方式這個功能。 Pdf文檔不會自動重排其內容。據我所知,沒有任何PDF庫可以讓你插入/替換/編輯內容,並且仍然製作一個漂亮的文檔。

在你的情況下,最好的解決辦法是:

  • 存儲模板文件作爲一個簡單的編輯格式
  • 基於這個簡單的模板

示例PDF文件使用 - 案例:

  1. 我有一些HTML文檔,其中包含精確的佈局和圖像和文本,一第二部分佔位符的東西我要填寫。
  2. 我用JSoup(或其他一些庫)編輯我的模板的DOM結構,這是很容易的,因爲我可以給元素ID和簡單地改變由ID的內容。我不需要正則表達式。
  3. 我用pdfHTML(iText的插件),以我的html文件轉換爲PDF