Мне нужно создать документ 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 - как имеющие размеры в точках?
SVG чувствителен к регистру, так что это viewBox, а не viewbox. Это помогает? –
Спасибо, что указал на проблему чувствительности к случаю. Однако нет, это не имеет никакого значения здесь. Значение верхнего поля по-прежнему игнорируется, кадр рисуется в нужном размере, но его содержимое - синий прямоугольник - по-прежнему имеет неправильный размер. – DroidOS