C# word 转换成pdf 并且修改其中控件内容

由于业务需求,根据模板生成word .而我们的模板是使用vsto开发的wps 插件。在生成word 以后需要生成pdf。需求如下:

1、下载是带水印

2、将其中零时编号改成正式编号(审批通过的编号)

3、去掉之前控件背景色

4、生成pdf

完整代码如下:这是一个一般处理程序.ashx

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Web;
using Woo.Utility;
using WooDataEntity;

namespace Web.ModuleBusiness.ContractText
{
    /// <summary>
    /// SaveWpsPDF 的摘要说明
    /// </summary>
    public class SaveWpsPDF : IHttpHandler
    {


        public void ProcessRequest(HttpContext context)
        {
            WCMSDATA wd = DataEntity.Initializes();
            string textId = context.Request["Id"];
            string previewType = context.Request["previewType"];
            WOO_CONT_TEXT cont_text = wd.WOO_CONT_TEXT.First(p => p.ID == Convert.ToInt32(textId));
            var contract = wd.WOO_CONTRACT.First(h => h.ID == Convert.ToInt32(cont_text.CONTRACT_ID));//获取机构下的手印路径
            var water = contract.MAIN_DEPARTMENT_.WATER_MARK;
            var is_wateremark = contract.IS_WATERMARK;
            //if (is_wateremark == 0)//不带 水印
            //{
            //    return;
            //}
            string newContractNo = contract.NO;
            string fileName = is_wateremark == 0 ? "ContractTextWordTemplate.docx" : System.IO.Path.GetFileName(water);// context.Request["filename"] == null ? "ContractTextWordTemplate.docx" : context.Request["filename"];
            string pdfFileName = "";
            if (fileName.IndexOf('.') > 0)
            {
                pdfFileName = fileName.Substring(0, fileName.LastIndexOf('.'));
            }

            string dir = HttpContext.Current.Request.PhysicalApplicationPath;
            string date = string.Format("{0}-{1}-{2}-{3}-", DateTime.Now.ToString("yyyy-M-d"), DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
            string savePath = string.Format("{0}Upload\\TextField\\{1}", dir, pdfFileName + ".pdf");
            string newWordPath = string.Format("{0}Upload\\TextField\\{1}{2}", dir, date, "newWord.docx");
            string contextPath = "";
            string templatePath = string.Format("{0}Upload\\WordTemplate\\{1}", dir, fileName);//"ContractTextWordTemplate.docx");



            string filePath = cont_text.PATH;
            string firstDir = "", endFileName = "", showPdf = "";
            if (filePath.LastIndexOf(".pdf") < 0)//没转换pdf
            {
                var fileNameSub = filePath == "" ? "" : filePath.Substring(filePath.LastIndexOf('/'));
                contextPath = string.Format("{0}Upload\\TextField\\{1}", dir, fileNameSub);
                //生成PDF
                string reValue = ConvertPDF(t
项目使用VS2017打开,.net 2.0下运行。 项目使用的微软官方的插件方法,可以将doc, docx, xls, xlsx, ppt, pptx文件转换为pdf文件,但是需要: 1、用户需要首先安装一个SaveAsPDFandXPS.exe的工具; 2、如果用户是xp系统,则: 2.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application 和 Microsoft Office Document Imaging这2个选项,否则转换失败; 2.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项,然后从office 2007安装包里面安装Microsoft Office Document Imaging(因为2010删除了这个选项,好麻烦~),否则转换失败; 2.3 xp不能安装office 2013/2016; 3、如果用户是win7系统,则: 3.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application 和 Microsoft Office Document Imaging这2个选项,否则转换失败; 3.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项(win7 + office 2010不需要安装Microsoft Office Document Imaging) 3.3 如果用户安装的是office 2013或2016,则不需要额外选项; 4、如果用户是win10系统,则: 4.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application这个选项,(win10 + office 2007不需要安装Microsoft Office Document Imaging)否则转换失败; 4.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项(win10 + office 2010不需要安装Microsoft Office Document Imaging) 4.3 如果用户安装的是office 2013或2016,则不需要额外选项; 5、如果用户安装了wps 2016或者wps 2019也可以正常转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值