コード: 全て選択
<?php
print "Converter start\n";
if (convertPDF("F:\Hoge.odt", "F:\Hoge.pdf")):
print "Complete\n";
else:
print "Error\n";
endif;
function convertPDF($odf, $pdf){
$Result = false;
$oServiceManager = new COM("com.sun.star.ServiceManager");
$oDesktop = $oServiceManager->createInstance("com.sun.star.frame.Desktop");
// 設定値を指定します
$aLoadProperty = array();
$aLoadProperty[0] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aLoadProperty[0]->Name = "Hidden";
$aLoadProperty[0]->Value = True;
$aLoadProperty[1] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aLoadProperty[1]->Name = "ReadOnly";
$aLoadProperty[1]->Value = True;
$aStoreProperty = array();
$aStoreProperty[0] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[0]->Name = "FilterName";
$aStoreProperty[0]->Value = "";
$aStoreProperty[1] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[1]->Name = "Overwrite";
$aStoreProperty[1]->Value = true;
$aStoreProperty[2] = $oServiceManager->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aStoreProperty[2]->Name = "FilterData";
$aStoreProperty[2]->Value = createPdfFilterData;
// ファイルを開きます
$oDoc = NULL;
try{
$oDoc = $oDesktop->loadComponentFromURL(ConvertToUrl($odf), "_blank", 0, $aLoadProperty);
} catch(Exception $error) {
print "loadComponentFromURL error message: " . $error->getMessage() . "\n";
}
if ($oDoc <> NULL):
// フィルタは指定しなくてもPDFに出力しますが、念の為設定
$aStoreProperty[0]->Value = getPdfFilter($oDoc);
if ($aStoreProperty[0]->Value <> ""):
// ファイルをPDFに出力します
try{
$oDoc->storeToURL(ConvertToUrl($pdf), $aStoreProperty);
$Result = true;
} catch(Exception $error) {
print "storeToURL error message: " . $error->getMessage() . "\n";
}
endif;
// ドキュメントを閉じて終了します
if ($oDesktop->Frames->Count > 1):
$oDoc->close(true);
else:
$oDesktop->terminate;
endif;
endif;
return $Result;
}
function createPdfFilterData(){
$DIRECT_VALUE = 0;
$aFilterData = array(
array("UseLosslessCompression",0,true,$DIRECT_VALUE),
array("Quality",0,90,$DIRECT_VALUE),
array("ReduceImageResolution",0,false,$DIRECT_VALUE),
array("MaxImageResolution",0,300,$DIRECT_VALUE),
array("UseTaggedPDF",0,true,$DIRECT_VALUE),
array("SelectPdfVersion",0,0,$DIRECT_VALUE),
array("ExportNotes",0,false,$DIRECT_VALUE),
array("ExportBookmarks",0,true,$DIRECT_VALUE),
array("OpenBookmarkLevels",0,-1,$DIRECT_VALUE),
array("UseTransitionEffects",0,true,$DIRECT_VALUE),
array("IsSkipEmptyPages",0,true,$DIRECT_VALUE),
array("IsAddStream",0,false,$DIRECT_VALUE),
array("EmbedStandardFonts",0,false,$DIRECT_VALUE),
array("FormsType",0,0,$DIRECT_VALUE),
array("ExportFormFields",0,true,$DIRECT_VALUE),
array("AllowDuplicateFieldNames",0,false,$DIRECT_VALUE),
array("HideViewerToolbar",0,false,$DIRECT_VALUE),
array("HideViewerMenubar",0,false,$DIRECT_VALUE),
array("HideViewerWindowControls",0,false,$DIRECT_VALUE),
array("ResizeWindowToInitialPage",0,false,$DIRECT_VALUE),
array("CenterWindow",0,false,$DIRECT_VALUE),
array("OpenInFullScreenMode",0,false,$DIRECT_VALUE),
array("DisplayPDFDocumentTitle",0,true,$DIRECT_VALUE),
array("InitialView",0,0,$DIRECT_VALUE),
array("Magnification",0,0,$DIRECT_VALUE),
array("Zoom",0,100,$DIRECT_VALUE),
array("PageLayout",0,0,$DIRECT_VALUE),
array("FirstPageOnLeft",0,false,$DIRECT_VALUE),
array("InitialPage",0,1,$DIRECT_VALUE),
array("Printing",0,2,$DIRECT_VALUE),
array("Changes",0,4,$DIRECT_VALUE),
array("EnableCopyingOfContent",0,true,$DIRECT_VALUE),
array("EnableTextAccessForAccessibilityTools",0,true,$DIRECT_VALUE),
array("ExportLinksRelativeFsys",0,false,$DIRECT_VALUE),
array("PDFViewSelection",0,0,$DIRECT_VALUE),
array("ConvertOOoTargetToPDFTarget",0,true,$DIRECT_VALUE),
array("ExportBookmarksToPDFDestination",0,false,$DIRECT_VALUE),
array("_OkButtonString",0,"",$DIRECT_VALUE),
array("EncryptFile",0,false,$DIRECT_VALUE),
array("DocumentOpenPassword",0,"",$DIRECT_VALUE),
array("RestrictPermissions",0,false,$DIRECT_VALUE),
array("PermissionPassword",0,"",$DIRECT_VALUE),
array("",0,NULL,$DIRECT_VALUE));
return $aFilterData;
}
function getPdfFilter($oDoc){
$aFilterName = "";
if ($oDoc->supportsService("com.sun.star.text.TextDocument") == true):
$aFilterName = "writer_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.text.WebDocument") == true):
$aFilterName = "writer_web_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.text.GlobalDocument") == true):
$aFilterName = "writer_globaldocument_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.sheet.SpreadsheetDocument") == true):
$aFilterName = "calc_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.drawing.DrawingDocument") == true):
$aFilterName = "draw_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.presentation.PresentationDocument") == true):
$aFilterName = "impress_pdf_Export";
endif;
if ($oDoc->supportsService("com.sun.star.formula.FormulaProperties") == true):
$aFilterName = "math_pdf_Export";
endif;
return $aFilterName;
}
function ConvertToUrl($sFileName){
$sFileName = str_replace("\\", "/", $sFileName);
$sFileName = str_replace("%", "%25", $sFileName);
$sFileName = str_replace(" ", "%20", $sFileName);
$sFileName = str_replace("#", "%23", $sFileName);
$sFileName = str_replace("&", "%26", $sFileName);
$sFileName = str_replace("+", "%2B", $sFileName);
$sFileName = str_replace("<", "%3C", $sFileName);
$sFileName = str_replace("=", "%3D", $sFileName);
$sFileName = str_replace(">", "%3E", $sFileName);
$sFileName = str_replace("@", "%40", $sFileName);
$sFileName = "file:///" . $sFileName;
return $sFileName;
}
?>