2014-11-08 73 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