以下是我使用iTextSharp创建PDF的函数。
让我解释一下这个功能......
我在这里从另一个模板PDF文件创建一个PDF文件。模板PDF文件将发送到bytes[]
中的此功能,然后我从此创建pdfReader
...
从pdfReader
我创建pdfStamper
(即新的PDF文件)并将响应值写入其字段。它工作得很好......唯一的问题是fint
值大小很大......
public void GeneratePrintPDFTest(ResponseGroup actual, Pages page, byte[] filebyte, out string pdfname, string localstorage)
{
string rootPath = @"D:/FOP-PDF/";
var pdfReader = new PdfReader(filebyte);
var pdfStamper = new PdfStamper(pdfReader,new FileStream(rootPath.ToString(CultureInfo.InvariantCulture) + page.PageId.ToString(CultureInfo.InvariantCulture)
+ ".pdf",FileMode.Create));
pdfname = rootPath.ToString(CultureInfo.InvariantCulture) + page.PageId.ToString(CultureInfo.InvariantCulture) + ".pdf";
AcroFields pdfFormFields = pdfStamper.AcroFields;
foreach (DictionaryEntry de in pdfReader.AcroFields.Fields)
{
var response = actual.Responses.Where(obj => obj.ITPPageFieldKeyId == Convert.ToInt32(de.Key.ToString())).Select(obj => obj).FirstOrDefault();
if (response != null)
{
if (response.ResponseValues != null && !string.IsNullOrEmpty(response.ResponseValues.ToString())
&& response.ResponseValues.ToString() != "0" && !string.IsNullOrEmpty(response.DataItemID)
&& response.DataItemID != "0")
{
if (response.PrintFormulaResult || response.PageFieldFormulaId == 0)
{
pdfFormFields.SetField(de.Key.ToString(), response.ResponseValues.ToString());
}
}
}
}
pdfStamper.FormFlattening = false;
pdfStamper.Close();
}
我尝试了以下解决方案,但没有用......
float fSize = 10;
pdfFormFields.SetFieldProperty(de.Key.ToString(), de.Key.ToString(), fSize, null);
我也怀疑它可能来自模板PDF文件,但如果是这样,我怎么能以编程方式更改它。
请帮助我......提前致谢...