pdf
  • svg
  • tcpdf
  • 2016-02-29 43 views 1 likes 
    1

    我需要创建一个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的打印测试,确保“缩小到适合页宽”选项被关闭。

    从我所看到的

    • 上边距指令只是被忽略
    • 我有一个神秘的horizo​​intal 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)视为具有点的维度?

    +0

    SVG是区分大小写,因此它的viewBox和不是viewbox。这有帮助吗? –

    +0

    感谢您指出区分大小写问题Robert。但是,这里没有任何区别。上边距设置仍然被忽略,帧被绘制到正确的大小,但其内容 - 蓝色矩形 - 仍然大小不正确。 – DroidOS

    回答

    0

    我有一个类似的问题,其中A4 SVG没有填充A4 PDF - 奇怪的是放大和边缘出于某种原因裁剪。

    我缩小了SVG文件比页面(A6)小很多,后来才知道是能够扩展它备份到是完全使用TCPDF合适的大小:

    $pdf->ImageSVG($file, 0, 0, 297, 210); 
    
    相关问题