gpt4 book ai didi

php - 使用 PHP/OO 将 ODT 转换为 PDF

转载 作者:可可西里 更新时间:2023-11-01 14:36:50 25 4
gpt4 key购买 nike

我目前正在尝试从 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 打印机时进行任何字体替换。

最佳答案

首先尝试使用此库将 ODT 转换为 HTML(以保持格式)

https://gist.github.com/1918801

然后使用这个 FPDF将 html 转换为 pdf 的库

我猜 FPDF不会那么容易地支持从 html 转换,所以有一个 FPDF 的插件

这是插件的链接

plugin for FPDF to convert from HTML

关于php - 使用 PHP/OO 将 ODT 转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11949797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com