2012-06-25 34 views
9

Tôi đang phát triển một số tập lệnh để tạo tệp SVG và tôi tự hỏi những trình kết xuất SVG tốt nào tồn tại cho Linux. Tôi biết Firefox/Chrome cung cấp hỗ trợ SVG (và tôi có cảm giác Chrome nhanh hơn khi hiển thị) nhưng có thể có các trình kết xuất SVG độc lập khác mà tôi đang thiếu. Tôi biết sự tồn tại của pySVG.Trình kết xuất SVG tốt cho Linux?

Bằng cách đủ tốt, tôi muốn đề cập đến đặc tả SVG 1.1 càng nhiều càng tốt. Lý do tôi thích một thư viện độc lập là luồng công việc của tôi nhanh hơn, vì tôi không phải nhấn F5 mỗi lần.

+2

"tốt" khá chủ quan, tôi khuyên bạn nên cập nhật câu hỏi nêu rõ yêu cầu của bạn, tính năng svg bạn cần, cách bạn cần sử dụng thư viện, v.v. –

+0

Bạn có nghĩa là trình kết xuất màn hình hay PDF/bitmap renderer? Bất kỳ tùy chọn ngôn ngữ lập trình nào? – halfer

+0

Có, trình kết xuất màn hình để tạo các hình ảnh raster điển hình theo định nghĩa SVG chuẩn. Về sở thích ngôn ngữ, tôi đang sử dụng python để tạo SVG, nhưng tôi không gắn với bất kỳ ngôn ngữ nào cho phần SVG. – rubenafo

Trả lời

3

SVG 1.1 được xuất bởi công cụ draw.io quá "hiện đại" để hiển thị chính xác theo Batik, Cairo, qiv hoặc thậm chí FireFox hiện tại: dường như không có phần tử nào hỗ trợ phần tử < foreignObject>. Tuy nhiên WebKit không hiển thị đúng cách, do đó, để chuyển đổi SVG thành hình ảnh chất lượng cao, tôi sử dụng công cụ "wkhtmlto ..." từ http://wkhtmltopdf.org.

wkhtmltoimage tạo ra đầu ra ở độ phân giải màn hình và --zoom chuyển đổi các dòng được chia tỷ lệ và văn bản khác nhau dẫn đến cắt (mặc dù mở cùng SVG trong Chrome và thu phóng được thực hiện chính xác). Vì vậy, thay vào đó tôi đang sử dụng wkhtmltopdf để tạo ra một pdf trung gian sau đó render đó như là một hình ảnh có độ phân giải cao với GhostScript:

wkhtmltopdf callbacks.svg callbacks.pdf 
gs -sDEVICE=pnggray -sOutputFile=callbacks.png -dBATCH -dNOPAUSE -r900 callbacks.pdf 

EDIT: một nhược điểm đi qua một trang Mô tả Format là các tập tin hình ảnh được sản xuất có thể có biên giới rất lớn. Bạn có thể thử nghiệm với kích thước và bố cục giấy để giảm thiểu điều này hoặc chỉ tự động cắt chúng, ví dụ: với ImageMagick:

convert callbacks.png -trim callbacks.png 

EDIT: FireFox 49.0.2 (tháng 11 năm 2016) hiện đang hiển thị chính xác SVG. Chưa thử lại Cairo hay Batik. sample draw.io file

+0

Tôi đã chuyển sang ImageMagick vài tháng trước. Tôi tìm thấy chất lượng của pngs nó tạo ra cao hơn so với những cái được tạo ra bằng cách sử dụng Cairo. Và nó thậm chí con số ra các phần mở rộng đầu vào/đầu ra trực tiếp mà không cần tham số thêm. – rubenafo

+0

@figurebelow - Tôi đã đính kèm một bản xuất mẫu draw.io: đối với tôi, điều này vẫn hiển thị với "Không được người xem hỗ trợ" thông qua ImageMagick nhưng hiện đang hoạt động trong FireFox. Nó có hoạt động với cấu hình của bạn không? –

+0

Bạn đang đổ lỗi cho Batik vì một cái gì đó không phải là lỗi của nó. Batik là trình kết xuất SVG. Nếu bạn bao gồm HTML trong một phần tử '', thì đó không phải là trách nhiệm của Batik khi render nó. Bạn chỉ nên mong đợi HTML được hiển thị trong một công cụ được thiết kế cho HTML, chẳng hạn như trình duyệt. Cairo không phải là trình kết xuất đồ họa SVG, vì vậy tôi không biết tại sao bạn cũng bao gồm cả đó. –

6

Apache Batik là bộ sưu tập rất tốt các thư viện/chương trình có hỗ trợ một phần rất lớn của đặc tả SVG. Nó bao gồm trình xem/trình chỉnh sửa độc lập và trình chỉnh sửa dòng lệnh có thể chuyển đổi SVG thành định dạng hình ảnh raster.

+0

Cuối cùng tôi tiếp tục với Batik. Nó có thể được thực hiện từ dòng lệnh với một kịch bản đơn giản và dường như có một hỗ trợ SVG tốt và phát triển tích cực. Cảm ơn! – rubenafo

+0

## Tháng 11 năm 2016 cập nhật ## Sau một thời gian tôi chuyển sang Chrome dưới dạng trình kết xuất SVG. Firefox cũng hoạt động tốt nhưng tôi thấy Chrome nhanh hơn nhiều. IExplorer là một thay thế khá và đáng ngạc nhiên nó đi kèm với một nhà xuất bản PNG bản địa đó là khá tốt quá. – rubenafo

2

Qt SVG chỉ cần 2 lần nhấp chuột, nếu bạn cài đặt Qt 4.7 và chọn dự án mẫu được cài đặt cục bộ svgviewer. Chỉ cần xây dựng và chạy để có được một khung nhìn hoạt hình:

enter image description here

2

Tôi khuyên bạn nên WebkitGtk. Đây là trình kết xuất được sử dụng để cấp nguồn cho Safari, Chrome và một số trình duyệt khác. Nó hỗ trợ hiển thị SVG cũng như HTML.

Chỉ cần apt-get install libwebkitgt-3.0-0. Bạn có thể dùng thử bằng cách chạy /usr/lib/webkitgtk-3.0-0/libexec/GtkLauncher.

Sau đó bạn có thể sử dụng bất kỳ ngôn ngữ/bindings bạn muốn xây dựng một giao diện xung quanh các renderer SVG, bao gồm Gtk bindings Python: http://www.aclevername.com/articles/python-webgui/

Đây là một bài viết tốt về việc xây dựng UI máy tính để bàn sử dụng Webkit và pygtk bindings: http://arstechnica.com/information-technology/2009/07/how-to-build-a-desktop-wysiwyg-editor-with-webkit-and-html-5/

+0

Nơi '/ usr/lib/webkitgtk-3.0-0/libexec/GtkLauncher' xuất phát từ đâu? Tôi đã cài đặt 'libwebkitgtk-3.0-0' nhưng không có thứ gì như vậy. – Hibou57

4

Bạn có thể thử ứng dụng dòng lệnh qiv với cờ -m -T.

+0

qiv trông rất tuyệt. –

+0

qiv hoạt động tốt, nhưng tôi thích không có cờ với hình ảnh nhỏ. – b3h3m0th

Các vấn đề liên quan