5

現在、PHP からサイレント モードで OO を使用して ODT を PDF に変換しようとしています。そのためのコードは次のとおりです。

function MakePropertyValue($name, $value,$osm){ 
   $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue"); 
   $oStruct->Name = $name; 
   $oStruct->Value = $value; 
   return $oStruct; 
} 
function odt2pdf($doc_url, $output_url){
$osm = new COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.\n");
$args = array(MakePropertyValue("Hidden",true,$osm));
$oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
$oWriterDoc = $oDesktop->loadComponentFromURL($doc_url,"_blank", 0, $args);
$aFilterData  = array();
$aFilterData [0] = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$aFilterData [0]->Name = "SelectPdfVersion";
$aFilterData [0]->Value = 1;
$obj  = $osm->Bridge_GetValueObject();
$obj->set("[]com.sun.star.beans.PropertyValue",$aFilterData );
$storePDF = array();
$storePDF[0] = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
$storePDF[0]->Name = "FilterName";
$storePDF[0]->Value = "writer_pdf_Export";
$storePDF[1] = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");   
$storePDF[1]->Name = "FilterData";
$storePDF[1]->Value = $obj;
$oWriterDoc->storeToURL($output_url,$storePDF);
$oWriterDoc->close(true);
}
$output_dir = "C:/wamp/www/cert/pdf/";
$doc_file = "C:/wamp/www/cert/output2.odt";
$pdf_file = "output2.pdf";
$output_file = $output_dir . $pdf_file;
$doc_file = "file:///" . $doc_file;
$output_file = "file:///" . $output_file;
odt2pdf($doc_file,$output_file);

ご覧のとおり、なんとか PDF/A-1a に変換できましたが、使用されているフォントはまだ保持されていません。これを Open Office の GUI 内から変換すると、フォントは保持されます。どうしたの?

更新:私は PDF への変換を停止し、PHP で exec() を使用して、Open Office を使用して odt をプリンターにサイレント印刷することにしました。

追加の注意事項として、PostScript プリンターに印刷するときにフォントの置換を防止するために、プリンター ドライバーのフォントの置換を必ずオフにしてください。

4

1 に答える 1

0

このライブラリを使用して、まず ODT を HTML に変換してみてください (フォーマットを維持するため)。

https://gist.github.com/1918801

後でこのFPDFライブラリを使用して、html から pdf に変換します

FPDFは html からの変換を簡単にはサポートしないと思うので、その FPDF 用のプラグインがあります。

ここにプラグインのリンクがあります

FPDF を HTML から変換するためのプラグイン

于 2012-09-02T16:59:43.560 に答える