一.安装libreOffice

点击官网下载libreOffice

二.创建一个新的项目LibreOffice

创建一个新的项目,方便后面调用

添加下面代码

 public class OfficeConvert
{
static string getLibreOfficePath()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.Unix:
return "/usr/bin/soffice";
case PlatformID.Win32NT:
string binaryDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
return binaryDirectory + "\\Windows\\program\\soffice.exe";
default:
throw new PlatformNotSupportedException("你的系统暂不支持!");
}
} public static void ToPdf(string officePath, string outPutPath)
{
//获取libreoffice命令的路径
string libreOfficePath = getLibreOfficePath(); ProcessStartInfo procStartInfo = new ProcessStartInfo(libreOfficePath, string.Format("--convert-to pdf --outdir {0} --nologo {1}", outPutPath, officePath));
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
procStartInfo.WorkingDirectory = Environment.CurrentDirectory; //开启线程
Process process = new Process() { StartInfo = procStartInfo, };
process.Start();
process.WaitForExit(); if (process.ExitCode != 0)
{
throw new LibreOfficeFailedException(process.ExitCode);
}
}
} public class LibreOfficeFailedException : Exception
{
public LibreOfficeFailedException(int exitCode)
: base(string.Format("LibreOffice错误 {0}", exitCode))
{ }
}

 三.将libreOffice的安装文件复制到自己项目host下面的如下路径

 

本操作主要是通过调用libreOffice的命令行方法,将office转化为pdf

四、当将程序发布到iis时,需要将应用程序池中的高级设置设置为true。

这个问题坑了我一个星期,如果不设置,进程会一直运行,不退出。

最新文章

  1. Asp.net在IE10、IE11下事件丢失经验总结
  2. 移植SDL运行库到Tiny6410 上
  3. 浅谈malloc()与free()
  4. PHP isset()与empty()的使用区别详解(转)
  5. 30天,APP创业从0到1【7.25上海站】
  6. chkconfig : No such file or directory
  7. centos复制到另外一台电脑连不上网
  8. OC1_类与对象
  9. ASP.NET操作Word的IIS权限配置
  10. 小波变换和motion信号处理(二)(转)
  11. C++箴言:理解 new-handler的行为
  12. springboot-mybatis 批量insert
  13. 【转】GPS连续运行单参考站解决方案
  14. PyAutoGUI使用
  15. C# 利用反射动态给模型Model 赋值
  16. Speech语音播报
  17. Shuffle 洗牌 [AHOI 2005]
  18. js函数集
  19. Combobox实现多项选择 Silverlight下“Combobox”怎样实现多项选择?
  20. mac 系统安装VM虚拟机打开时报错,提示不是虚拟磁盘的解决方式。

热门文章

  1. 阿里云ecs安全组端口开放设置
  2. (八十四)c#Winform自定义控件-导航菜单(类Office菜单)
  3. 利用C++实现模块隐藏(R3层断链)
  4. Android OkHttp + Retrofit 取消请求的方法
  5. jdbc 以及 事务的java类编写
  6. InfluxDB从原理到实战 - InfluxDB常用的基础操作
  7. 本人亲测-SSM整合后的基础包(供新手学习使用,可在本基础上进行二次开发)
  8. JNDI-Injection-Exploit
  9. SQL创建和调用有默认值的存储过程
  10. MySQL学习(三)MySQL锁与事务