OfficeがないサーバーでExcel=>PDFに変換したい

■仕様

asp.net / windows server2022(EC2) / IIS10.0

■やりたいこと

WebアプリでExcelをPDF変換したい

■経緯

無償のライブラリを探す=>全然ないしライセンス日本語でおk=>Officeを操作する無償ライブラリ「LibreOffice」の存在を認知=>サーバーにLibreOfficeインストールしてコマンド発行してExcelからPDFに変換すればいいんじゃね?

■結果

2日間、ハゲるくらい試行錯誤してやっとできた。同じ悩みの人にもサチアレ

■やったこと

1.windows server2022にLibreOfficeインストール

2..netコードにて指定ExcelをPDFに変換するコマンドを発行するよう実装


            'LibreOfficeのインストールパス
            Dim exePdf As String = "C:\Program Files\LibreOffice\program\soffice.exe"            Dim pdfProcess = New Process()
            pdfProcess.StartInfo.FileName = exePdf   'PDF変換コマンド記述            pdfProcess.StartInfo.Arguments = "-norestore -nofirststartwizard -headless -convert-to pdf  ""C:\pdftest.xlsx"""   'ワーキングディレクト
            pdfProcess.StartInfo.WorkingDirectory = "C:\tmp"
            pdfProcess.StartInfo.RedirectStandardOutput = True
            pdfProcess.StartInfo.UseShellExecute = False
            pdfProcess.Start()

 このまま実行しても何も起こらない。ずっとページの読み込み状態という感じ。

 ディレクトリにDefaultAppPoolの権限を与えてもダメ。

 ASPの偽装を試してもダメ。

3.IISのワーカープロセスを権限があるユーザーに変更する

 これがわからずめちゃくちゃ悩んだ。2のコマンド実行するユーザーに権限がなければいけないらしい。

 

①管理者権限を持つアプリケーションプールの作成(すでにあれば不要)

 「アプリケーションプール」クリック=>一覧を右クリック=>「アプリケーションプールの追加」

適当な名前つける

作ったアプリケーションプールを右クリック=>「詳細設定」

プロセスモデルタブのID項目の右端[...]をクリック

「カスタムアカウント」選択=>「設定」=>コマンドを実行する、管理者権限のあるユーザーを設定

 

②ワーカープロセスを管理者権限に変更したいサイトの設定

 

IISマネージャー開いて、「サイト」=>「Default Web Site」=>対象のサイト 右クリック=>「アプリケーションの管理」 => 「詳細設定」

 アプリケーションプール項目の右端[...]をクリック

 

先ほど作成したアプリケーションプールを設定