c#通过libreOffice实现 office文件转pdf文件
2024-09-01 10:06:39
一.安装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。
这个问题坑了我一个星期,如果不设置,进程会一直运行,不退出。
最新文章
- Asp.net在IE10、IE11下事件丢失经验总结
- 移植SDL运行库到Tiny6410 上
- 浅谈malloc()与free()
- PHP isset()与empty()的使用区别详解(转)
- 30天,APP创业从0到1【7.25上海站】
- chkconfig : No such file or directory
- centos复制到另外一台电脑连不上网
- OC1_类与对象
- ASP.NET操作Word的IIS权限配置
- 小波变换和motion信号处理(二)(转)
- C++箴言:理解 new-handler的行为
- springboot-mybatis 批量insert
- 【转】GPS连续运行单参考站解决方案
- PyAutoGUI使用
- C# 利用反射动态给模型Model 赋值
- Speech语音播报
- Shuffle 洗牌 [AHOI 2005]
- js函数集
- Combobox实现多项选择 Silverlight下“Combobox”怎样实现多项选择?
- mac 系统安装VM虚拟机打开时报错,提示不是虚拟磁盘的解决方式。