2016-02-29 4 views
1

Мне нужно создать документ PDF, где я могу разместить изображения SVG с точностью до миллиметра. Для этого я использую TCPDF. Я родственник новичок в TCPDF и запустить на несколько странных вопросовТочное размещение изображений SVG в 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'); 
?> 

Что я ожидаю для получения

  • Синий квадрат
  • 90мм шириной 60 мм & высокой
  • Размещенные 15 мм от левого края бумаги & 28.5mm вниз от верхней

Что я получаю вместо

  • Синий квадрат - хорошо до сих пор
  • Рамка, которая имеет нужный размер: 90 x 60 мм
  • размещено 17mm с левой стороны листа и 0mm с верхнего края бумаги.

Я выполнил мои проверки на печать Firefox, указав, что параметр «Усадка в соответствии с шириной страницы» отключен.

Из того, что я могу видеть

  • Верхняя инструкция запас просто игнорируется
  • У меня есть таинственное horizointal смещение 2мм
  • Хотя команда 90 х 60, как представляется, были поняты и применены к содержащему кадру фактический синий прямоугольник намного меньше.

Либо TCPDF имеет только несовершенное понимание единиц миллиметра в SVG, либо мое собственное понимание того, как управлять TCPDF, является ошибочным.


Я обнаружил, что ложное + 2-миллиметровое поле является проблемой для Firefox. Преданность печати оказалась лучшей с IE11 - неожиданность, неожиданность, я никогда не думал, что когда-либо буду говорить что-нибудь хорошее об IE.

Размер рамки - идеальное изображение - 90 мм x 60 мм, как указано. Синий прямоугольник SVG печатается на 32 x 21 мм, то есть странное сокращение до 35% от желаемого размера. Я не самый лучший из авторитетов, когда дело доходит до единиц измерения печати CSS, но если я правильно помню 1pt, то это 0,35 мм. Итак, TCPDF обрабатывает мою графику SVG, которая явно указывает mm - как имеющие размеры в точках?

+0

SVG чувствителен к регистру, так что это viewBox, а не viewbox. Это помогает? –

+0

Спасибо, что указал на проблему чувствительности к случаю. Однако нет, это не имеет никакого значения здесь. Значение верхнего поля по-прежнему игнорируется, кадр рисуется в нужном размере, но его содержимое - синий прямоугольник - по-прежнему имеет неправильный размер. – DroidOS

ответ

0

У меня была аналогичная проблема, когда A4 SVG не заполнял A4 PDF - по какой-то причине это было странно увеличено и обрезано по краям.

Я сжался файл SVG будет гораздо меньше, чем страница (А6), то я смог масштабировать его обратно, чтобы быть точно правильный размер, используя TCPDF:

$pdf->ImageSVG($file, 0, 0, 297, 210);