300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c#实现ppt word excel txt jpg文件转pdf功能

c#实现ppt word excel txt jpg文件转pdf功能

时间:2019-01-02 12:03:33

相关推荐

c#实现ppt word excel txt jpg文件转pdf功能

安装LibreOffice 7.2插件

使用的开发工具是VS,.NET6.0的项目框架。要实现office文件转pdf要先安装一个好用的插件。

1.到官网下载: LibreOffice下载地址

2.安装,这里我选择的是企业版

安装后文件目录结构:

3.配置环境变量,配置完成后可以使用cmd命令直接转换office文件为pdf文件,无须打开桌面的LibreOffice客户程序。

配置路径为,桌面上的电脑图标,右键“属性”-“高级系统设置”-“高级”-“环境变量”.

在Path变量下设置增加环境变量值:

我这里安装在f盘,设置如下。

F:\SoftWare\libreOffice\program

这里设置了两个地方的Path变量,一个是用户变量,一个是系统变量。

设置完成就可以来使用cmd命令检验下是否生效了。

使用cmd命令提示工具实现文件转换

1.快捷键win+R:打开cmd命令提示工具。

2.输入命令 “cmd /c soffice --headless --convert-to pdf F:/xx文件夹/测试文件.doc --outdir F:/xx文件夹/”,前面文件地址是绝对地址代表要转换生成的文件,后面地址是要生成到目标文件夹。按下Enter执行命令,在目标文件夹下面即会生成一个“测试文件.pdf”的新文件。这里验证了插件可以正常使用。

ps:当然有的电脑,不能识别这个soffice,可以使用soffice.exe来替换。就可以找到

在c#代码中调用cmd命令,程序自动执行转换文件

下面是执行cmd命令的代码片段

/// <summary>/// office文件转pdf/// </summary>/// <param name="officePath">输入文件夹地址</param>/// <param name="outPutPath">输出文件地址</param>/// <returns></returns>/// <exception cref="Exception"></exception>[HttpGet("OfficeToPdf")]public bool OfficeToPdf(string officePath = "F:/测试文件夹/机构图号命名规则.doc", string outPutPath = "F:/测试文件夹/"){var result = false;try{//拼接cmd命令,此命令执行前要确保环境变量有值string strCMD = $" soffice --headless --convert-to pdf {officePath} --outdir {outPutPath}";//调用cmd命令提示符工具using (var process = new Process()){process.StartInfo.FileName = "cmd.exe";//cmd / c xxxx:是执行完dir命令后关闭命令窗口;cmd / k xxxx:是执行完dir命令后不关闭命令窗口。process.StartInfo.Arguments = "/c " + strCMD; // "soffice --headless --convert-to pdf F:/测试文件夹/机构图号命名规则.doc --outdir F:/测试文件夹/";process.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 process.StartInfo.CreateNoWindow = true; //是否在新窗口中启动该进程的值 (不显示程序窗口)//process.StartInfo.WorkingDirectory = @"C:/Windows/system32"; // 重定向错误输出 process.Start();process.WaitForExit(); //等待程序执行完退出进程process.Close();}//查询文件是否存在,存在则返回turevar fileName = Path.GetFileName(officePath);if (fileName == "" || string.IsNullOrEmpty(fileName)) {return result; }var newFileName = Path.GetFileNameWithoutExtension(fileName) + ".pdf";newFileName = bine("F:/测试文件夹/", newFileName);if (System.IO.File.Exists(newFileName)){result = true;}return result;}catch (Exception ex){throw new Exception(ex.Message);}}

运行此段代码,可以发现同样生成了一个”机构图号命名规则.pdf“文件。

发布到IIS服务器

发布到IIS后发现执行完接口方法,界面就一直加载中,也没有文件生成。并不能实现生成文件的效果。

解决方法:

网站发布的”应用程序池“-”高级设置“

1.启用32位应用程序设置为True

2.托管管道模式为经典 Classic

3.进程模型中-”标识“-默认内置账户是”ApplicationPoolIdentity“改为”LocalSystem“。

接口重新调用后,就可以生成新的pdf文件了。

至此一个完整的方法就完结了。

参考了好几个博主的文章,其中最有灵感的是这个博主的文章。

【libreoffice】libreoffice实现office转pdf、html、jpg等格式数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。