2017-08-01 51 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