0

我一直在尝试使用 TCPDF 库创建包含 SVG 图像的 PDF。我想让 SVG 以页面为中心,上面和下面都有一些文本。

我已经设法让它工作到一定程度,但是部分 SVG 图像被切断,它似乎与 X/Y 位置有关,但我不知道如何解决这个问题。

是什么导致了截断我的 SVG 图像的 TCPDF 库错误?

代码:

<?php 

require_once('../../TCPDF/tcpdf.php');

// Remove the default header and footer
class PDF extends TCPDF { 
    public function Header() {} 
    public function Footer() {} 
} 

$pdf = new PDF();

$pdf->AddPage();

$pdf->SetFont('helvetica', 'B', 160);

$pdf->SetTextColor(0,0,0);

$pdf->Cell(0, 0, 'Higher', 1, 1, 'C', false, '', 1);

$pdf->Ln(4);

$pdf->ImageSVG($file='Image.svg', $x=0, $y=80, $w=100, $h=100, $link='', $align='N', $palign='C', $border=1, $fitonpage=false);

$pdf->Ln(4);

$pdf->Cell(0, 0, 'Lower', 1, 1, 'C', 0, '', 1);

$file = 'Result' . '.pdf'; // Set the name of the PDF file

$pdf->Output($file, 'F'); // Save PDF to file

$pdf->Output($file, 'I'); // Display the PDF

?>
4

2 回答 2

3

这似乎是我使用的当前版本的 TCPDF 库的一个错误。

问题是当您使用对齐功能时:

$align='N', $palign='C'

等等,如果其他人有类似的问题并且需要解决方法,我通过使用 x/y 位置手动居中 SVG 来修复它。

另一个需要注意的问题是,当我尝试使用一些大尺寸的 SVG 图像时,我注意到它会产生视觉故障,因此 SVG 处理肯定似乎有一些错误。对于这个问题,我发现的解决方法是降低 SVG 的大小,然后使用宽度/高度值来缩放它们,这似乎可以解决问题。

于 2012-07-30T18:59:33.513 回答
0

在编辑器中打开您的 svg 图像

  • 在 svg 标签中“
  • 查找宽度和高度的属性
  • 根据您的喜好修改它

    <svg xmlns="http://www.w3.org/2000/svg" 
    width="150" height="100" viewBox="0 0 3 2">
    
    <rect width="1" height="2" x="0" fill="#008d46" />
    <rect width="1" height="2" x="1" fill="#ffffff" />
    <rect width="1" height="2" x="2" fill="#d2232c" />
    </svg>
    

如果修改宽度和高度不起作用,则可能在<svg>...内有一个矩形标签或线条标签</svg>,它超过了已经定义的宽度和高度。

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg

于 2018-02-21T19:47:24.637 回答