所以我的任务是将我们的代码从使用Imagick切换到tcpdf,以便将svgs动态转换为pdfs。
我最终得到了以下代码:
<?php
define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO . '/../../../../../app/Mage.php';
require_once MAGENTO . '/../../../../../lib/tcpdf/tcpdf.php';
//require_once MAGENTO . '/../../../../../lib/tcpdf/config/lang/eng.php';
$app = Mage::app('default');
Mage::getSingleton("core/session", array("name" => "frontend"));
$session = Mage::getSingleton("customer/session");
$session_id = $session->getEncryptedSessionId();
$base = str_replace("/", "\/", $_POST['base']);
$b_svg = $_POST['b_svg'];
$t_svg = $_POST['t_svg'];
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('von Eicken');
$pdf->SetTitle('');
$pdf->SetSubject('');
$pdf->SetKeywords('');
$pdf->SetCellPadding(0);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (!empty($b_svg))
{
$b_svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$_POST['b_svg'];
$b_svg = preg_replace('#'.$base.'media#', '../../../../../media', $b_svg);
$b_svg = urldecode($b_svg);
$pdf->ImageSVG($file=@$b_svg, $x=0, $y=0, $w='', $h='', $link='', $align='', $palign='', $border=0, $fitonpage=false);
}
if (!empty($t_svg))
{
if (!empty($b_svg)){$y=50;}
$t_svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$_POST['t_svg'];
$t_svg = preg_replace('#'.$base.'media#', '../../../../../media', $t_svg);
$t_svg = urldecode($t_svg);
$pdf->ImageSVG($file=@$t_svg, $x=0, $y, $w='', $h='', $link='', $align='', $palign='', $border=0, $fitonpage=false);
}
$pdf->output("./pdfs/tmp_".$session_id.".pdf", F);
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN)."frontend/von_eicken/default/php/pdfs/temp_".$session_id.".pdf";
?>
我知道它有点乱,它正处于转换过程中。
我很高兴tcpdf看起来非常简单,但是,创建的pdf没有显示任何内容,只是在空白页面顶部的一条垂直线。也没有错误消息。 我想知道我的代码中是否遗漏了某些内容,或者我的svgs是否需要某些配置。
我想尽量避免插入svgs appart手动进行转换,所以有人可以向我解释,或者指向一个好的教程,如何正确使用tcpdf的ImageSVG功能?
非常感谢。
P.S。我也很欣赏清理代码的提示
p.p.s。哦,顺便说一句,第三个要求被注释掉,因为该文件不在我下载的tcpdf包中,我认为这些示例可能是指旧版本。但如果我真的需要那个文件,我在哪里可以得到它?
答案 0 :(得分:1)
好吧,我的错误显然是我认为新的PDF对象会以空白页开始。
但它根本不是从任何页面开始的,首先需要$pdf->addPage()
来创建一个可以绘制SVG的页面。
令人沮丧的一点疏忽。很抱歉打扰了你们所有人。