使用itextsharp将现有pdf中的内容复制到新的pdf

时间:2017-08-01 10:39:58

标签: itext

我能够复制内容并进行编辑,但我没有获得与旧模板相同的模板,模板正在更改,我的旧文件上有一个图像,并且该图像也没有被复制到我的新文件,其他内容正在被复制,有人帮我制作新的pdf文件模板,这是我的代码。

    public static void Main(string[] args)
    {
        var editedText = ExtractTextFromPdf(@"C:\backup_temp\Template.pdf");
        string outputfile =@"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();
        }
    }

1 个答案:

答案 0 :(得分:0)

正如布鲁诺所说,如果你的&#34;模板&#34;是另一个pdf文档,你不能以一种微不足道的方式实现这个功能。 Pdf文档不会自动重排其内容。据我所知,没有pdf库可以让你插入/替换/编辑内容,但仍然可以生成漂亮的文档。

您案例中的最佳解决方案是:

  • 将模板文档存储为易于编辑的格式
  • 基于此简易模板生成pdf文档

示例用例:

  1. 我有一些HTML文档,其中包含精确的布局,图像和文本,以及一些我希望填写的占位符。
  2. 我使用JSoup(或其他一些库)编辑模板的DOM结构,这非常简单,因为我可以提供元素ID,只需按ID更改内容即可。我不需要正则表达式。
  3. 我使用pdfHTML(iText附加组件)将我的html文档转换为pdf