我需要創建一個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