c#通过libreOffice实现 office文件转pdf文件

一.安装libreOffice

点击官网下载libreOffice

二.创建一个新的项目LibreOffice

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

添加下面代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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。

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

 

posted @   昵称已存在嘿  阅读(3894)  评论(4编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
欢迎阅读『c#通过libreOffice实现 office文件转pdf文件』
欢迎阅读『c#通过libreOffice实现 office文件转pdf文件』
点击右上角即可分享
微信分享提示