表单 – 使用iTextSharp使用HTML格式的文本填充PDF模板acrofield

表单 – 使用iTextSharp使用HTML格式的文本填充PDF模板acrofield,第1张

概述我正在使用iTextSharp填写PDF模板.我使用的数据保存在数据库中,并且是HTML格式的.我的问题是,当我用这个文本加载AcroField时,我得到它来做换行符,但没有粗体也没有斜体.我已经尝试使用HtmlWorker,但是所有在线示例都显示它用于将HTML转换为PDF,但我试图在PDF模板中设置AcroField.任何帮助,将不胜感激. 花了几天时间浏览论坛和iTextsharp源代码后, 我正在使用iTextSharp填写pdf模板.我使用的数据保存在数据库中,并且是HTML格式的.我的问题是,当我用这个文本加载AcroFIEld时,我得到它来做换行符,但没有粗体也没有斜体.我已经尝试使用HTMLWorker,但是所有在线示例都显示它用于将HTML转换为pdf,但我试图在pdf模板中设置AcroFIEld.任何帮助,将不胜感激.解决方法 花了几天时间浏览论坛和iTextsharp源代码后,我找到了解决方案.我没有使用HTML格式的文本填充AcrofIEld,而是使用了ColumnText.我解析HTML文本并将IElements加载到段落中.然后将段落添加到ColumnText.然后我使用字段的坐标将ColumnText覆盖在AcrofIEld应该位于的顶部.
public voID AddHTMLToContent(String HTMLText,PdfcontentByte contentBtye,IList<AcroFIElds.FIEldposition> pos)     {        Paragraph par = new Paragraph();        ColumnText c1 = new ColumnText(contentBtye);        try        {            List<IElement> elements = HTMLWorker.ParsetoList(new StringReader(HTMLText),null);            foreach (IElement element in elements)             {               par.Add(element);            }            c1.AddElement(par);            c1.SetSimpleColumn(pos[0].position.left,pos[0].position.Bottom,pos[0].position.Right,pos[0].position.top);            c1.Go(); //very important!!!        }        catch (Exception ex)        {            throw;        }    }

以下是对此函数的调用示例.

string HTMLText ="<b>Hello</b><br /><i>World</i>";IList<AcroFIElds.FIEldposition> pos = form.GetFIEldpositions("FIEld1");//FIEld1 is the name of the fIEld in the pdf Template you are trying to fill/overlayAddHTMLToContent(HTMLText,stamp.GetoverContent(pos[0].page),pos);//stamp is the pdfstamper in this example

我这样做的一件事是我的AcrofIEld确实有一个预定义的字体大小.由于此函数将ColumnText设置在字段的顶部,因此必须在函数中完成任何字体更改.以下是@R_455_6502@大小的示例:

public voID AddHTMLToContent(String HTMLText,null);            foreach (IElement element in elements)             {                foreach (Chunk chunk in element.Chunks)                 {                    chunk.Font.Size = 14;                }            }            par.Add(elements[0]);            c1.AddElement(par);            c1.SetSimpleColumn(pos[0].position.left,pos[0].position.top);            c1.Go();//very important!!!        }        catch (Exception ex)        {            throw;        }    }

我希望这能为将来节省一些时间和精力.

总结

以上是内存溢出为你收集整理的表单 – 使用iTextSharp使用HTML格式的文本填充PDF模板acrofield全部内容,希望文章能够帮你解决表单 – 使用iTextSharp使用HTML格式的文本填充PDF模板acrofield所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108668.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存