Python kullanarak bir SVG görüntüsünden PDF görüntüsü oluşturmaya çalışıyorum. Hem CairoSVG hem de svglib'u denedim. Sorun, her iki durumda da oluşturulan PDF'lerin uygulanan gömülü CSS stillerinden hiçbirine sahip olmamasıdır.Gömülü CSS ile SVG'yi Python'da PDF'ye dönüştürme
<?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 kullanarak bu SVG bir PDF oluşturma, PDF görüntü siyah bir dikdörtgen olarak oluşturulur:
İşte siyah kenarlı mavi dikdörtgen oluşturması gerektiğini basit bir SVG dosyasıdır. Svglib kullanarak, dikdörtgene uygulanacak vuruş veya stil yoktur, bu nedenle görünür değildir. Bir SVG 'u CSS stilleri ile Python'da bir PDF görüntüsüne dönüştürmenin bir yolu olduğunun farkında mısınız?
Ben daha geldi iyi SVG oluşturabilmek için phantomjs kullanarak biraz dolambaçlı kurulumdur, D3 görsellikler için küçük resimler yapmak zorunda. Phantomjs gerçek bir webkit tarayıcısı olduğundan, SVG tam olarak tarayıcı sürümünde oluşturulmuştur (bir phantompy modülü var ama çevremde segfaultrasyon var ve nedenini araştırmak için zamanım yok). –
CairoSVG belgelerine şu notu ekledi: CairoSVG, SVG dosyasını ayrıştırmak için lxml'yi ve etiketlerin stil özniteliğine dahil olmayan CSS'yi uygulamak içinse cssselect'i kullanabilir. Bu paketler mevcut değilse, CSS yalnızca stil özelliklerinde desteklenecektir. Tinycss ve cssselect paketlerini kurarsanız, probleminizi çözebilir. Bağımlılıklar bölümüne buradan ulaşabilirsiniz: http://cairosvg.org/user_documentation/ – MonkeyWrench
@MonkeyWrench: Eğer şu ana kadarki en iyi ipucu, eğer bir cevap verebiliyorsanız ve ödül toplayabiliyorsanız. –