gymmed / svg-parser
包含CSS文档样式,将样式应用到SVG文件上,而无需编辑原始的SVG文档。
v0.1
2024-09-15 17:50 UTC
This package is auto-updated.
Last update: 2024-09-15 20:57:14 UTC
README
Svg Parser PHP

将CSS文档样式应用到SVG文件上,而不会修改原始SVG文件。它还可以解析CSS变量,并将它们的值直接插入到CSS选择器样式中,因此它不仅适用于浏览器渲染。
安装
您可以通过composer安装此包
composer require gymmed/svg-parser-php
使用场景
Dompdf 或 laravel封装 laravel-dompdf 不支持直接导入SVG或需要包含外部SVG文件。此库提供了一种方法,可以将CSS文档附加到SVG文件上,而无需直接修改SVG。
如果您遇到相同的问题,我强烈建议使用 imagick 或 rasterize-svg 将SVG转换为PNG并在PDF中包含它。这样,您减少了由 Dompdf 错误渲染样式的机会,并且不需要两个不同的CSS文档或两个SVG文件。
用法
use GymMed\SvgParser; //provide full path $svgPath = realpath(__DIR__ . "./assets/example.svg"); $cssPath = realpath(__DIR__ . "./assets/css/index.css"); $svgWithCSS = SvgParser::formatSvgFromPath($svgPath, [$cssPath]);
或使用SVG内容
use GymMed\SvgParser; //provide full path $svgPath = realpath(__DIR__ . "./assets/example.svg"); $cssPath = realpath(__DIR__ . "./assets/css/index.css"); $svg = file_get_contents($svgPath); $svgWithCSS = SvgParser::formatSvg($svg, [$cssPath]);
如果您想编写简单的CSS并在SVG内部应用它
use GymMed\SvgParser; //provide full path $svgPath = realpath(__DIR__ . "./assets/example.svg"); $svg = file_get_contents($svgPath); $svgWithCSS = SvgParser::getParsedCSSToSvg($svg, ".circle { background-color: red; border-radius: 50% }");
如果您只想提供完整路径而不是SVG本身
use GymMed\SvgParser; //provide full path $svgPath = realpath(__DIR__ . "./assets/example.svg"); $svgWithCSS = SvgParser::getParsedCSSToSvgFromPath($svgPath, ".circle { background-color: red; border-radius: 50% }");