0

我正在尝试找到一种将采购订单数据写入 PDF 文件的方法。有人可以建议我吗?

我买不起第 3 方 DLL,所以想要一个免费 DLL 或任何其他方式的建议。

我试过这个:(http://www.codeproject.com/Articles/7627/PDF-Library-for-creating-PDF-with-tables-and-text)但它没有帮助。

4

3 回答 3

3

使用iTextSharp是 iText 的 C# 端口,以及用于 PDF 生成和操作的开源 Java 库。它可用于从头开始创建 PDF 文档、将 XML 转换为 PDF(使用额外的 XFA Worker DLL)、填写交互式 PDF 表单、在现有 PDF 文档上标记新内容、拆分和合并现有 PDF 文档,以及多得多。

特征

  • PDF 生成
  • PDF 操作(加盖水印,合并/拆分 PDF,...)
  • PDF表格填写
  • XML 功能
  • 数字签名
于 2013-02-21T06:55:05.840 回答
0

明智地创建它会起作用

string Filepath = Server.MapPath("/AOF.pdf"); var pdfpath = Path.Combine(Filepath, "");

    var Formcontent = ListFieldNames(Filepath);
    Formcontent["Name_txt"] = "T.Test";
    FillForm(Formcontent);
  //  var pdfContents = FillForm(pdfpath, Formcontent);


}
public Dictionary<string, string> ListFieldNames(string Filepath)
{




    //PdfReader pdfReader = new PdfReader(pdfTemplate);

    //StringBuilder sb = new StringBuilder();

    //foreach(DictionaryEntry de in pdfReader.AcroFields.Fields)
    //{

    //    sb.Append(de.Key.ToString() + Environment.NewLine);

    //}

    var Fileds = new Dictionary<string, string>();
    PdfReader pdfReader = new PdfReader(Filepath);
    var reader = new PdfReader(pdfReader);
    foreach (var entry in reader.AcroFields.Fields)
        Fileds.Add(entry.Key.ToString(), string.Empty);
    reader.Close();

    return Fileds;

}
public byte[] FillForm(string pdfPath, Dictionary<string, string> formFieldMap)
{

    var output = new MemoryStream();
    var reader = new PdfReader(pdfPath);
    var stamper = new PdfStamper(reader, output);
    var formFields = stamper.AcroFields;


    foreach (var fieldName in formFieldMap.Keys)
        formFields.SetField(fieldName, formFieldMap[fieldName]);


    stamper.FormFlattening = true;
    stamper.Close();
    reader.Close();

    return output.ToArray();

}
public void FillForm(Dictionary<string, string> Formfiledmap)
{

    string pdfTemplate =Server.MapPath("/AOF.pdf");

    string newFile = @"C:\Users\USer\Desktop\completed_fw4.pdf";

    PdfReader pdfReader = new PdfReader(pdfTemplate);

    PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));

    AcroFields pdfFormFields = pdfStamper.AcroFields;

    foreach(var fieldName in Formfiledmap.Keys)
        pdfFormFields.SetField(fieldName,Formfiledmap[fieldName]);





    pdfStamper.FormFlattening = true;

    pdfStamper.Close();

} 
于 2018-06-09T11:03:59.603 回答
-1

您可以将 iText 库用于 .NET,您可以在此处找到一些有用的信息 http://www.ujihara.jp/iTextdotNET/en/examples.html从http://itextpdf.com/ 下载 iText 库

于 2013-02-21T06:56:16.297 回答