Sto provando a generare un'immagine PDF da un'immagine SVG utilizzando Python. Ho provato sia CairoSVG e svglib. Il problema è che in entrambi i casi i PDF generati non hanno nessuno degli stili CSS incorporati applicati.Conversione di SVG con CSS incorporato in PDF in Python
Ecco un semplice file in formato SVG, che dovrebbe rendere un rettangolo blu con un bordo nero:
<?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>
Durante il rendering del PDF di questo file SVG usando CairoSVG, l'immagine PDF viene visualizzato come un rettangolo nero. Usando svglib, non vi è alcun tratto o stile applicato al rettangolo, quindi non è visibile. Qualcuno è a conoscenza di un modo per convertire un SVG con stili CSS in un'immagine PDF in Python?
devo fare le miniature per le visualizzazioni D3, finora il migliore mi è venuta è una configurazione un po 'contorto utilizzando phantomjs per rendere il formato SVG. Poiché phantomjs è un vero browser webkit, SVG è reso esattamente come la versione del browser (c'è un modulo phantompy ma è segfaulting nel mio ambiente e non ho il tempo di indagare sul motivo). –
La documentazione di CairoSVG ha questa nota: CairoSVG può usare lxml per analizzare il file SVG e tinycss più cssselect per applicare il CSS non incluso nell'attributo style dei tag. Se questi pacchetti non sono disponibili, i CSS saranno supportati solo negli attributi di stile. Se installi i pacchetti tinycss e cssselect, potrebbe risolvere il tuo problema. Vedi la sezione Dipendenze qui: http://cairosvg.org/user_documentation/ – MonkeyWrench
@MonkeyWrench: è il miglior consiglio fino ad ora, se ti interessa puoi renderlo una risposta e raccogliere la taglia. –