我需要创建一个PDF文档,我可以放置毫米精度的SVG图像。我正在使用TCPDF来达到这个目的。我是TCPDF的相对新手,遇到了几个奇怪的问题
这是我的测试SVG图像
<svg width="90mm" height="60mm" viewBox='0 0 90 60'
preserveAspectRatio="none">
<rect width='90' height='60' style='fill:blue;stroke:black;stroke-
width:1'/>
</svg>
这是我的测试TCPDF生成指令
<?php
require_once('tcpdf_include.php');
$pdf = new TCPDF("P","mm","A4",true,'UTF-8',false);
$pdf->setImageScale(1);
$pdf->SetMargins(15,28.5,15,true);
$pdf->AddPage();
$pdf->ImageSVG('images/colorbox.svg',0,0,'','','','',0,true);
//frame just for testing
$pdf->Output('colorbox.pdf', 'I');
?>
我期望得到什么
取而代之的是
我做了我对Firefox的打印测试,确保了&#34;缩小以适应页面宽度&#34;选项已关闭。
从我所看到的
TCPDF对SVG中的毫米单位只有不完全的理解,否则我自己对如何控制TCPDF的理解是有缺陷的。
我发现假的+ 2mm边距是Firefox问题。打印保真度是IE11的最佳选择 - 惊喜,惊喜,我从未想过我会对IE说任何好话。
框架尺寸完美 - 90mm x 60mm正如指示的那样。蓝色SVG矩形以32×21mm打印,即奇怪地减少到所需尺寸的35%。对于CSS打印测量单元,我不是最好的权威,但如果我没记错,1pt是0.35mm。因此,TCPDF正在处理我的SVG图形 - 明确指定mm - 具有点的尺寸?
答案 0 :(得分:0)
我有一个类似的问题,A4 SVG没有填充A4 PDF - 由于某种原因,它被奇怪地放大并在边缘裁剪。
我将SVG文件缩小到比页面小得多(A6),然后我能够使用TCPDF将其缩小到正确的大小:
$pdf->ImageSVG($file, 0, 0, 297, 210);