1

以下是我正在编写的使用 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 文件,但如果是这样,我怎么能以编程方式更改它。

请帮助我...在此先感谢...

4

0 回答 0