中文官方网站

http://www.e-iceblue.com/

https://github.com/eiceblue/Spire.PDF-for-.NET

商业信息

https://www.qast.com/product/1589.html

案例

https://www.cnblogs.com/programYuan/p/13931392.html

模板

https://www.cnblogs.com/XWCloud/p/6831064.html

打开Word,点击 文件->选项->自定义功能区,勾选上“开发工具”:

主要使用文本域控件,插入作为标签:


// 首先需要引用 NPOI 库和 Spire.Doc 库
using NPOI.XWPF.UserModel;
using Spire.Doc;

// 定义输入和输出文件的路径
string inputFilePath = @"C:\input.docx";
string outputFilePath = @"C:\output.pdf";

// 使用 NPOI 读取 Word 文档
XWPFDocument document = new XWPFDocument(new FileStream(inputFilePath, FileMode.Open));

// 使用 Spire.Doc 库将 Word 文档转换为 PDF
Document spireDoc = new Document();
spireDoc.LoadFrom(document, FileFormat.Docx);
spireDoc.SaveToFile(outputFilePath, FileFormat.PDF);

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace We.Framework.Spire
{
    /// <summary>
    /// Sprie.Doc
    /// Designed by XIAO
    /// 2017-05-09
    /// </summary>
    public class WordHandler
    {
        public static bool ExportWordByFields<T>(T mod, string TempleteFilePath, string ExpFilePath)
        {
            if (mod == null)
            {
                throw new Exception("模型为空!");
            }

            System.Reflection.PropertyInfo[] properties = mod.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
            if (properties.Length <= 0)
            {
                throw new Exception("模型属性为空!");
            }

            if (!File.Exists(TempleteFilePath))
            {
                throw new Exception("指定路径的模板文件不存在!");
            }

            try
            {
                Document doc = new Document();
                doc.LoadFromFile(TempleteFilePath);

                #region 替换文字
                //doc.Replace("海关", "海关口岸", true, true);
                //doc.Replace("报验", "报检", true, true);
                #endregion

                //清除表单域阴影
                doc.Properties.FormFieldShading = false;

                //遍历Word模板中的文本域(field.name为文本域名称)
                foreach (FormField field in doc.Sections[0].Body.FormFields)
                {
                    foreach (System.Reflection.PropertyInfo prop in properties)
                    {
                        string name = prop.Name; //属性名称
                        object value = prop.GetValue(mod, null);  //属性值
                        string des = ((DescriptionAttribute)Attribute.GetCustomAttribute(prop, typeof(DescriptionAttribute))).Description;// 属性描述值

                        //注意:文本域名称 == 模型中属性的 Description 值 !!!!!!
                        //也可以: 文本域名称 == 模型中属性的 Name 值 !!!!!!
                        if (field.Name == des)
                        {
                            if (field.DocumentObjectType == DocumentObjectType.TextFormField)   //文本域
                            {
                                if (prop.PropertyType.Name == "Boolean")
                                {
                                    field.Text = "√";   //插入勾选符号
                                    break;
                                }
                                else
                                {
                                    field.Text = value.ToString();   //向Word模板中插入值
                                    break;
                                }
                            }
                            else if (field.DocumentObjectType == DocumentObjectType.CheckBox)   //复选框
                            {
                                (field as CheckBoxFormField).Checked = (value as bool?).HasValue ? (value as bool?).Value : false;
                            }
                        }
                    }
                }

                doc.SaveToFile(ExpFilePath, FileFormat.Docx);
                doc.Close();

                return true;
            }
            catch (Exception ex)
            {
                string msg = ex.Message;

                return false;
            }
        }
    }
}
文档更新时间: 2024-05-05 07:45   作者:admin