使用itextsharp(或任何c#pdf库),如何打开PDF,替换一些文本,然后再次保存?

前端之家收集整理的这篇文章主要介绍了使用itextsharp(或任何c#pdf库),如何打开PDF,替换一些文本,然后再次保存?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用itextsharp(或任何c#pdf库),我需要打开一个PDF,用实际值替换一些占位符文本,并将其作为byte []返回.

有人可以建议怎么做吗?我已经看了一下itext文档,无法弄清楚从哪里开始.到目前为止,我仍然坚持如何将源PDF文件从PDFReader获取到Document对象,我认为我可能以错误的方式接近它.

非常感谢

解决方法

最后,我使用PDFescape打开我现有的PDF文件,并将一些表单字段放在我需要放置字段的位置,然后再次保存以创建我的PDF文件.

http://www.pdfescape.com

然后我找到了关于如何替换表单字段的博客文章

http://www.johnnycode.com/blog/2010/03/05/using-a-template-to-programmatically-create-pdfs-with-c-and-itextsharp/

一切都很好!这是代码

public static byte[] Generate()
{
  var templatePath = HttpContext.Current.Server.MapPath("~/my_template.pdf");

  // Based on:
  // http://www.johnnycode.com/blog/2010/03/05/using-a-template-to-programmatically-create-pdfs-with-c-and-itextsharp/
  var reader = new PdfReader(templatePath);
  var outStream = new MemoryStream();
  var stamper = new PdfStamper(reader,outStream);

  var form = stamper.AcroFields;
  var fieldKeys = form.Fields.Keys;

  foreach (string fieldKey in fieldKeys)
  {
    if (form.GetField(fieldKey) == "MyTemplatesOriginalTextFieldA")
      form.SetField(fieldKey,"1234");
    if (form.GetField(fieldKey) == "MyTemplatesOriginalTextFieldB")
      form.SetField(fieldKey,"5678");
  }

  // "Flatten" the form so it wont be editable/usable anymore  
  stamper.FormFlattening = true;  

  stamper.Close();
  reader.Close();

  return outStream.ToArray();
}
原文链接:https://www.f2er.com/c/118226.html

猜你在找的C&C++相关文章