C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用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();
}

大佬总结

以上是大佬教程为你收集整理的使用itextsharp(或任何c#pdf库),如何打开PDF,替换一些文本,然后再次保存?全部内容,希望文章能够帮你解决使用itextsharp(或任何c#pdf库),如何打开PDF,替换一些文本,然后再次保存?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。