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(
"你的系統(tǒng)暫不支持!"
);
}
}
public
static
void
ToPdf(
string
officePath,
string
outPutPath)
{
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))
{ }
}