pdf
  • svg
  • tcpdf
  • 2016-02-29 72 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); 
    
    相關問題