我需要创建一个PDF文档,以便我可以以毫米级的精度放置SVG图像。我正在使用TCPDF来达到这个目的。我是一个相对的新手到TCPDF并遇到了一些奇怪的问题在TCPDF中准确放置SVG图像
这里是我的测试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');
?>
我期待什么得到
- 蓝色方块
- 90毫米宽&高60mm
- 放置15毫米从纸张的左侧边缘从顶部
我得到什么,而不是
- 一个蓝色方形&28.5毫米下来 - 目前为止好
- 一个尺寸合适的框架:90 x 60毫米
- 放置17mm从纸张的左侧边缘和0mm从纸张的上边缘。
我做了我的Firefox的打印测试,确保“缩小到适合页宽”选项被关闭。
从我所看到的
- 上边距指令只是被忽略
- 我有一个神秘的horizointal 2毫米
- 偏移虽然出现在90×60的指令已被理解和应用到包含框架,实际的蓝色矩形是一个很小的整体。
TCPDF对SVG中的millimbeter单元只有不完全的理解,否则我自己对如何控制TCPDF的理解是有缺陷的。
我发现spurious + 2mm margin是一个Firefox问题。打印保真度成为IE11的最佳选择 - 惊喜,惊喜,我从来没有想过我永远不会说IE的任何好处。
框架尺寸是图片完美 - 90毫米x 60毫米正如指示。蓝色SVG矩形以32 x 21mm的宽度打印,即奇怪的缩小至所需尺寸的35%。当谈到CSS打印测量单位时,我不是最好的当局,但是如果我记得1pt是0.35mm。因此,TCPDF将我的SVG图形(它明确指定mm)视为具有点的维度?
SVG是区分大小写,因此它的viewBox和不是viewbox。这有帮助吗? –
感谢您指出区分大小写问题Robert。但是,这里没有任何区别。上边距设置仍然被忽略,帧被绘制到正确的大小,但其内容 - 蓝色矩形 - 仍然大小不正确。 – DroidOS