TCPDF Растягивает текст по вертикали


Я работаю над проектом, в котором тексты должны быть растянуты прямоугольником заданного размера. Я попробовал imagick для этого, но с ним произошли некоторые потери качества.

Например, у меня есть коробка размером 203x78 (любого размера), и я написал текст "LOREM IPSUM LOREM" (любой текст). Я хочу, чтобы этот текст полностью соответствовал моему заданному размеру 203x78, независимо от размера шрифта, независимо от любых других вещей, просто качества и полностью соответствовал моей коробке.

Я не нахожу лучшего метода, чем imagick с этим способ: сначала нарисуйте прозрачный текст с размером шрифта, наиболее близким к моему окну (конечно, немного больше), и нарисуйте изображение. После этого измените его размер до моего размера коробки. При изменении его размера я попробовал любой из фильтров в imagick. Таким образом, нет ничего, кроме текстов небольшого размера. Например. размер шрифта 20 пикселей, а мой определенный размер поля больше, чем рисование примерно на 1-3 пикселя с любой стороны. Я имею в виду, что размер нарисованного текста 20 пикселей составляет 40x18, но мое поле 41x20. поэтому измените его размер до 41x20, но размыто в любом эффекте и значении эффекта.

Поэтому я хочу создать свой текст с помощью TCPDF и хочу изменить размер текста, чтобы он соответствовал любому заданному размеру. Фитинг должен быть полностью подогнан как по горизонтали, так и по вертикали, полностью растянут. Я выбрал PDF, потому что текст в PDF в векторном формате и при изменении любого размера потерь нет.

TCPDF имеет горизонтальную растяжку, но я не смог найти никакого способа растянуть обе стороны.

Дополнительная информация: для создания текста требуется использовать файлы ttf. требуется прозрачный вывод png. горизонтальная растяжка не должна будьте с интервалом между символами, все действия должны совпадать с изменением размера вектора, КАК В ADOBE ILLUSTRATOR.

illustrator resized texts, any size

Пытается: я использовал php gd для этого, но очень плохого качества, чем imagick. я попытался установить свой сервер php-cairo, но не смог этого сделать. я искал inkscape для этого, но не смог найти способ работы в командной строке. я попробовал imagick output > inkscape для преобразования вектора, но потерпел полное фиаско. я попробовал TCPDF вывод > imagick для изменения размера, но качество fiacso (imagick не имеет возможность изменения размера вектора)

Помогите!

Author: Ahmet Mehmet, 2013-06-29

2 answers

ImageMagick нельзя использовать для этого, потому что это "процессор растровых изображений". Так что в любом случае изображение будет растеризовано перед любой операцией (см. Форматы векторных изображений).

Я добился, чтобы с помощью inkscape получилось что-то довольно чистое.

Прежде всего, нам понадобится простой svg-файл, содержащий текст. Такой файл может быть легко сгенерирован с помощью PHP или любого другого языка:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   version="1.1">
  <g>
    <text
       xml:space="preserve"
       style="font-size:40px;
              font-style:normal;
              font-weight:normal;
              line-height:125%;
              letter-spacing:0px;
              word-spacing:0px;
              fill:#000000;
              fill-opacity:1;
              stroke:none;
              font-family:Helvetica"
       x="0"
       y="0"
       sodipodi:linespacing="125%"><tspan
         sodipodi:role="line"
         x="0"
         y="0">Hello World!</tspan></text>
  </g>
</svg>

Оттуда мы можем легко изменить текст, шрифт, цвет... затем следующая командная строка выполняет трюк (настраивая параметры -w и -h):

inkscape filename.svg --export-png=filename.png -w800 -h300 --export-area-drawing
 3
Author: IcanDivideBy0, 2013-07-03 12:21:04

Способ, который я нашел, заключается в выполнении преобразований и выводе html

$pdf->StartTransform();

$pdf->Scale(100,150);

// Output html.
$html=('sample text');
$pdf->writeHTMLCell($w=50, $h=10, $x='', $y='', $html, $border=1, $ln=1, $fill=0, $reseth=true, $align='C', $autopadding=true);


$pdf->StopTransform();
 0
Author: KoZe, 2014-11-21 17:15:38