我試圖從使用Python的SVG圖像生成PDF圖像。我試過CairoSVG和svglib。問題是,在這兩種情況下,生成的PDF都沒有應用任何嵌入的CSS樣式。將嵌入式CSS的SVG轉換爲Python中的PDF
這裏是一個應該呈現藍色的長方形黑色的邊框一個簡單的SVG文件:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs>
<style type="text/css"><![CDATA[
rect {
fill: #1f77b4;
stroke: black;
stroke-width: 1;
shape-rendering: crispEdges;
}
]]></style>
</defs>
<rect x="50" y="50" width="100" height="100"></rect>
</svg>
渲染時使用CairoSVG這個SVG的PDF,PDF格式的圖像呈現爲黑色矩形。使用svglib,沒有筆畫或樣式應用於矩形,因此不可見。有沒有人知道一種方法將SVG 與CSS樣式轉換爲Python中的PDF圖像?
我必須做出對D3可視化縮略圖,到目前爲止,我想出最好是使用phantomjs呈現SVG有點令人費解的設置。由於phantomjs是一個真正的webkit瀏覽器,所以SVG的渲染與瀏覽器版本完全相同(有一個幻影模塊,但它在我的環境中存在缺陷,我沒有時間調查原因)。 – 2013-07-22 15:37:32
的CairoSVG文檔中有這樣一個字條:CairoSVG可以使用LXML解析SVG文件,tinycss加cssselect申請不包括在標籤的樣式屬性CSS。如果這些軟件包不可用,CSS將只在樣式屬性中受支持。如果你安裝tinycss和cssselect軟件包,它可能會解決你的問題。看到這裏的依賴關係部分:http://cairosvg.org/user_documentation/ – MonkeyWrench 2013-07-26 19:16:26
@MonkeyWrench:這是迄今爲止最好的提示,如果你關心你可以做出答案並收集獎金。 – 2013-07-28 00:46:58