Mam kilka wykresów utworzonych za pomocą D3js, które chcę przekonwertować na obraz PNG za pomocą JavaScript, aby użytkownicy mogli pobrać wykres.Konwertowanie SVG utworzonego za pomocą D3js do PNG
Widziałem rozwiązania, które konwertują SVG na płótno i konwertują płótno na obraz. To nie zadziała, ponieważ SVG używa klas do stylizowania elementów (co raczej nie chciałbym zmieniać ze względu na łatwość), co powoduje, że całe płótno staje się czarne z bardzo grubymi liniami.
Czy można bezpośrednio przekonwertować wykresy SVG na format PNG?
Strona znajduje się wewnątrz projektu Ruby on Rails, więc nie musi być czystym rozwiązaniem JavaScript, ale wolałbym to zrobić z JavaScriptem, aby móc zaimplementować go również w innych projektach.
Niestety, nie zrobiłem jeszcze nic z SVG, więc ta odpowiedź może być nonsensem :). Czy mówisz o tym, używając klas, a nie wbudowanych stylów, które są pomijane podczas konwersji na płótno? W takim przypadku, czy nie chodzi o programowe stosowanie stylów z klasy css przed konwersją na płótno? – Owen
Kiedy dodałem to pytanie 2 miesiące temu, to był rzeczywiście problem. Zaimplementowałem już rozwiązanie similair do tego, co zasugerowałeś. Problemem, który napotkałem po tym, jest to, że większość przeglądarek nie renderuje poprawnie wygenerowanego płótna/PNG. W wyniku tego brakuje elementów i/lub obraz staje się czarny. Problem, który napotkałem w IE, polega na tym, że nie mogę przekazać danych-uri o długości większej niż 2048 znaków, więc nie mogę przekazać całego pakietu uri, aby zaprezentować go do pobrania (w zasadzie niezwiązany z pytaniami). –