2014-11-08 72 views
2

4.3版LibreOffice的XLSX转换为PDF在ASP.NET MVC

在C#中,我试图用无头选项将XLSX转换为PDF,但是当我运行这个从ASP.NET或一个简单的没有任何反应命令提示符。

  var pdfProcess = new Process(); 
      pdfProcess.StartInfo.FileName = exe; 
      pdfProcess.StartInfo.Arguments = param + " \"" + fullDocPath +"\""; 
      pdfProcess.Start(); 

凡exe文件,而params是:

C:\Program Files (x86)\LibreOffice 4\program\soffice.exe 

    -norestore -nofirststartwizard -nologo -headless -convert-to pdf "c:\UDS_Docs\temp\Teller Roster National.xlsx" 

我使用的GUI来测试的LibreOffice可以转换的文件,它工作得很好。

回答

3

这里是如何的Excel,Word等转换为PDF格式上的ASP.NET MVC的网站在没有成本:

安装LibreOffice的,免费

将当前目录到同一文件夹中现有的XLS。这似乎是缺失的一块。

运行以下命令:

"C:\Program Files (x86)\LibreOffice 4\program\soffice.exe" -norestore -nofirststartwizard -headless -convert-to pdf "TheFile.xlsx" 

在C#:

  var pdfProcess = new Process(); 
      pdfProcess.StartInfo.FileName = exePdf; 
      pdfProcess.StartInfo.Arguments = "-norestore -nofirststartwizard -headless -convert-to pdf \"TheFile.xlsx\""; 
      pdfProcess.StartInfo.WorkingDirectory = docPath; //This is really important 
      pdfProcess.Start(); 

确保您WorkerProcess访问exe文件,默认情况下它没有。

+0

非常感谢您的回答。工作目录是最重要的事情,在我终于浪费了一天的一半时间后才知道;) – monikapatel 2016-09-01 04:05:17

+2

只是为了增加这一点,因为我一直在爬墙试图把它全部弄清楚。基本上在您的应用程序池中,您希望将用户配置文件加载为true--我认为这是默认设置,但我的设置是错误的,导致无法解决问题。 – 2017-10-06 13:57:48

2

原来,我试图运行的exe需要很多访问(它是LibreOffice,用于从Excel制作PDF)。

所以最简单的解决方案是做一个超级简单的WindowsService,安装它并运行。该网站将大量数据放入服务所监视的地方,然后工作和网站稍后再进行采集。这样我就可以用最少的权限运行网站,并且仍然有一个主要的服务在运行。

+0

感谢您的见解,但请您指出网站需要哪些权限以及指向哪些目录。我已授予IIS_IUSRS用户LibreOffice目录的所有权限以及输出目录和输入文件的所有权限,但仍然没有任何反应。我可能错过了什么? – gyosifov 2017-09-13 14:38:01

+1

你不知道。创建一个Windows服务并监控网站将文件放入文件的放置文件夹。 Web服务器不运行LibreOffice,WindowsService会。你需要编写一个Windows服务。 – 2017-09-14 16:23:44