我现在正在做一个项目,它需要我渲染一个 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
也来自命令行。然后它甚至不会启动 GUI。
以下命令会将您的 SVG 转换为 PDF:
inkscape \
--without-gui \
--file=input.svg \
--export-pdf out.pdf
下面的屏幕截图来自转换为 PDF 后引用的 SVG 源(在 OP 中):
要查看更多可能对 inkscape 命令有用的参数,请参阅 inkscape --help
。
更新
顺便说一句,我的 ImageMagick 版本(OSX Mavericks 上的 MacPorts 版本)将 SVG 转换为 PDF 没有问题:
$ convert -version
Version: ImageMagick 6.9.0-0 Q16 x86_64 2014-12-06 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib
convert input.svg out2.pdf
这是生成的 PDF 的屏幕截图:
关于php - 在 PHP 中使用带有弯曲文本的 SVG 创建 PDF - 不显示任何文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29563757/