我使用iTextSharp
填寫PDF
模板。我正在使用的數據保存在數據庫中,格式爲HTML
。我的問題是,當我加載AcroField
與這個文本我得到它做的換行符,但沒有大膽也不斜體。我已經嘗試使用HtmlWorker
,但所有在線示例都顯示它用於將HTML
轉換爲PDF
,但我試圖在PDF模板中設置AcroField
。任何幫助,將不勝感激。使用iTextSharp填充HTML格式文本的PDF模板acofield
5
A
回答
9
花了幾天時間瀏覽論壇和iTextsharp源代碼後,我找到了一個解決方案。我沒有用HTML格式的文本填充Acofield,而是使用了ColumnText。我解析html文本並將IElement加載到段落中。然後將該段落添加到ColumnText。然後,我使用字段的座標將ColumnText覆蓋在Acofield的頂部。
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/overlay
AddHTMLToContent(htmlText, stamp.GetOverContent(pos[0].page), pos);
//stamp is the PdfStamper in this example
我這樣做時遇到的一件事是,我的Acofield確實有預定義的字體大小。由於該函數將ColumnText設置在字段頂部,因此任何字體更改都必須在函數中完成。以下是更改字體大小的示例:
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)
{
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.Bottom, pos[0].position.Right, pos[0].position.Top);
c1.Go();//very important!!!
}
catch (Exception ex)
{
throw;
}
}
我希望這可以爲將來節省一些時間和精力。
+0
你一定幫...這有點令人費解的方式工作。感謝您發佈您的發現! 「fields.SetFieldRichValue」不起作用是一種遺憾。我現在正在使用iTextSharp 5.4.2。 – 2013-07-06 00:07:48
0
所以,在過去的幾個月裏,我不得不調整一下這段代碼,並且我找到了一個更好/更少的方法來做到這一點。
public void Final(string text,string fieldName,string filename)
{
iTextSharp.text.pdf.PdfReader reader = null;
iTextSharp.text.pdf.PdfStamper stamp = null;
reader = new PdfReader(file path to template);
stamp = new PdfStamper(reader, new FileStream(path to new file, FileMode.CreateNew));
AcroFields form = stamp.AcroFields;
//get the position of the field
IList<AcroFields.FieldPosition> pos = form.GetFieldPositions(fieldName);
//tell itextSharp to overlay this content
PdfContentByte contentBtye = stamp.GetOverContent(pos[0].page);
//create a new paragraph
Paragraph par = new Paragraph();
//parse html
List<IElement> elements = HTMLWorker.ParseToList(new StringReader(text), null);
for (int k = 0; k < elements.Count; k++)
{
par.Add((IElement)elements[k]);
}
//create a ColumnText to hold the paragraph and set position to the position of the field
ColumnText ct = new ColumnText(contentBtye);
ct.SetSimpleColumn(pos[0].position.Left, pos[0].position.Bottom, pos[0].position.Right, pos[0].position.Top);
ct.AddElement(par);
ct.Go();
stamp.Close();
reader.Close();
}
相關問題
- 1. 用西里爾文價值填充pdf模板字段(itextsharp)
- 2. 如何用iTextSharp填充PDF表格?
- 3. 用iTextSharp填充PDF-Form-Fields
- 4. 使用數據庫值填充iTextSharp pdf
- 5. 使用複選框填充PDF格式的文本字段
- 6. 使用Django模板填充json到html
- 7. Android填充PDF格式
- 8. 使用iTextSharp和C格式化pdf上的文本控件#
- 9. 如何使用iText格式化pdf模板中的文本
- 10. itextsharp multipage pdf格式
- 11. 使用itextsharp以pdf格式編程替換文本
- 12. 文本模板的字符串填充
- 13. 使用iTextSharp的PDF表格
- 14. 如何使用iTextSharp填寫已填寫的PDF表格
- 15. 未知色彩格式異常從HTML到PDF使用iTextSharp的
- 16. 如何使用javascript或html下載PDF格式的填充表格
- 17. 使用ITextSharp填充PDF中的下拉列表
- 18. 使用基於iTextSharp的模板創建PDF文檔
- 19. 用PHP填充PDF表格
- 20. 用PHP填充PDF表格
- 21. ItextSharp - 自動填充使用C#的pdf表格 - 問題與複選框
- 22. 使用UTF-8填充的HTML字符串創建PDF表格
- 23. 使用iText(iTextSharp)在PDF中填充XFA表單域?
- 24. 如何從模板中讀取表格,然後用iTextSharp填充它們?
- 25. 使用紅寶石填充PDF表格
- 26. 使用FPDF填充PDF表格
- 27. pdf填充模板表格轉換爲Excel或CSV?
- 28. 如何使用itextsharp將html頁面轉換爲PDF格式的css文件?
- 29. 使用iTextSharp製作PDF格式的符合PDF/A的圖像
- 30. 使用iTextSharp填充大型文本字段
看到這個職位有關使用富文本字段http://stackoverflow.com/a/4412527/231316 – 2013-03-26 19:49:00