У меня есть несколько файлов SVG, с которыми я хотел бы создать PDF. Для простоты предположим, что каждый представляет одну страницу в PDF. В SVG есть узел, содержащий текст, который я хотел бы исключить. Как мне это сделать? Вот пример файла SVG и для включения его в качестве страницы в PDF.
Допустим, существует файл с именем /home/dave/images/some_image.svg, содержащий это:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="470" height="363" xml:space="preserve">
<g clip-path="url(#some-path)">
<rect id="some-rect" fill="#FFFFFF" stroke="#666" height="363" width="470" opacity="1" x="0" y="0"/>
<defs id="some-defs">
<clipPath id="some-path" x="0" y="0" width="100%" height="100%">
<rect height="363" x="0" y="0" width="470" fill="#fff"/>
</clipPath>
</defs>
<g id="some-group">
<path id="a-path"/>
<g id="a-container">
<text id="some-text" x="235" y="181">This text needs to go</text>
<image x="-2000" y="-1500" width="4000" height="3000" xlink:href="http://www.somewebsite.com/image.jpg" id="some-img"/>
</g>
</g>
</g>
</svg>
и теперь для образца, который его использует
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="page" margin="0pt"
page-height="363pt" page-width="470pt">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="page">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:external-graphic
src='/home/dave/images/some_image.svg'/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Так что это прекрасно работает для включения всего svg "как есть". Как я могу исключить текстовый узел?
<text id="some-text" x="235" y="181">This text needs to go</text>
Что касается реальных файлов, которые я использую, они ссылаются на шрифт, который мне не нужно будет включать в PDF, и текст в любом случае будет за изображением, поэтому не будет доступен для просмотра.