【发布时间】:2015-06-16 07:26:09
【问题描述】:
我现在正在处理一个项目,该项目需要我渲染一个 PDF,其中包括一个带有弯曲文本的 SVG。
需要以这种方式创建文本,因为它必须支持多种语言并且其中包含变量。
到目前为止,我已经按照我想要的方式呈现了 PDF,除了弯曲的文本,它会被忽略。
这是我尝试渲染的 SVG:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" height="1024px" width="1280px" id="mainSVG">
<defs>
<path d="m250,250 a10,10 0 0 0 350,250" id="curvedTextPath"></path>
<path d="m250,250 a10,10 0 0 1 350,250" id="curvedTextPath2"></path>
</defs>
<circle style="fill: blue;" cx="425px" cy="375px" r="250" id="mainCircle"></circle>
<text>
<textPath startOffset="55%" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#curvedTextPath">Some test text that is longer</textPath>
<textPath startOffset="22.5%" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#curvedTextPath2">Smaller text here</textPath>
</text>
</svg>
我尝试使用 Imagick 转换 SVG,它只给了我没有文字的圆圈:
<?php
$svg = file_get_contents("/path/to/test.svg");
$image = new Imagick();
$image->readImageBlob($svg);
$image->setImageFormat("png");
$image->writeImage("/path/to/lobster.png");
?>
ImageMagick 命令“convert”和 TCPDF 的“imageSVG”函数也是如此:
require_once('./tcpdf/tcpdf_import.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setCreator(PDF_CREATOR);
$pdf->setAuthor('Test');
$pdf->setTitle('Curvetest');
$pdf->setSubject('Testing of the Curve');
$pdf->addPage();
$pdf->imageSVG($file = './test.svg', $x = 15, $y = 30, $w = '', $h = '');
$filepath = '/path/to/test.pdf';
$pdf->Output($filepath, 'F');
我现在没有想法,我读到 ImageMagick 在转换时会忽略 textPath,但如果安装了 libRSVG,它应该可以工作......好吧,它是,但它仍然不起作用。
- 有人知道如何处理这个问题吗?
- 也许我还没有想到另一种方法?
【问题讨论】:
-
顺便说一下,路径标签中的值有点奇怪,因为我们今天下午玩弄了一些数字来弄清楚路径标签是如何工作的
-
我刚刚尝试使用inkscape。它在实际显示文本路径上的文本时效果更好,但不能正确读取文本路径。两个文本中只有一个显示在完全不同的位置,向后且字母间距更大。
-
您找到解决此问题的方法了吗?我现在也一样
-
我做到了,实际上我不得不用 javascript 来做,我找到了一个预先存在的脚本,希望这有助于解决您的问题:github.com/codrops/Arctext
标签: php pdf svg imagemagick imagemagick-convert