công cụ dòng lệnh linux miễn phí để chuyển đổi SVG sang PDF và / hoặc một số định dạng bitmap thường được sử dụng?


17

Có một công cụ dòng lệnh linux miễn phí để chuyển đổi SVG sang PDF và / hoặc một số định dạng bitmap thường được sử dụng (ví dụ PNG) không?

linux  svg 

2
mogrify -format pdf -- *.svg
Yrogirg

Câu trả lời:


25

Imagemagick là tuyệt vời khi đầu ra rasterized (pixelated) là những gì bạn muốn (hoặc ít nhất là chấp nhận được), nhưng là một lựa chọn tồi, vì nó nhúng một cách hiệu quả vào pdf một phiên bản rasterized của bất cứ điều gì bạn đang cố gắng chuyển đổi. Điểm chung của svg / pdf là nó có thể được vector hóa, do đó kích thước nhỏ hơn, trong khi vẫn mượt mà ở bất kỳ độ phân giải nào.

Vì vậy, tôi chắc chắn sẽ khuyên bạn nên sử dụng Inkscape hoặc CarioSVG . Sau đó có một số tiện ích dòng lệnh một cách chính xác cho mục đích này ( svg2pdf, svg2pssvg2png). Khó khăn duy nhất là về cơ bản nó chỉ là một quả trứng trăn, vì vậy nếu bạn không có môi trường trăn được thiết lập và không đủ hiểu biết (hoặc không quan tâm đủ) để thiết lập, thì tùy chọn đó là không đi. Tôi đã cố gắng, nhưng có vấn đề khi thiết lập yêu cầu libcairo(không phải là tôi đã cố gắng quá nhiều).

Inkscape là tuyệt vời, nhưng cli là một chút vụng về nếu bạn muốn chỉ là một lệnh nhỏ nhanh chóng để làm tất cả công việc cho bạn. Tôi tập hợp một vài kịch bản nhỏ để chăm sóc tất cả cho tôi:

svg2pdf

#!/bin/bash

for i in $@; do
  inkscape --without-gui --export-pdf="$(basename $i .svg).pdf" $i
done

svg2png

#!/bin/bash

for i in $@; do
  inkscape --without-gui --export-png="$(basename $i .svg).png" $i
done

Đặt cái đầu tiên vào ~/bin/svg2pdfvà cái sau vào ~/bin/svg2png, chạy chmod +xtrên cả hai để làm cho chúng có thể thực thi được và bùng nổ! Bạn có một lối tắt nhanh chóng và dễ dàng cho các thao tác thường muốn này mà không yêu cầu bạn phải suy nghĩ hoặc nhớ cách CLI của Inkscape hoạt động. (Rõ ràng bạn cần cài đặt Inkscape trước khi nó hoạt động)


Tôi đã làm một bài kiểm tra hiệu suất nhanh với ImageMagick và inkscape với thế hệ của file PDF mười và ImageMagicknhanh 5,77 lần. time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;real 0m2.192s time for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;real 0m0.381s

6
Nó có thể nhanh hơn, nhưng bạn mất đi tính chất véc tơ của đồ họa, vì vậy nó có thể cũng lớn hơn gấp 10 lần (mặc dù tôi rất muốn bạn sửa lỗi cho tôi nếu tôi sai). Lý do mất nhiều thời gian hơn là vì nó đang thực hiện các thao tác vectơ thực tế, phức tạp hơn nhiều so với rasterizing (về cơ bản là tương đương với kết xuất).
metadaarous

7

Image MagickInkscape cũng có các công cụ dòng lệnh.


3
convertchiến thắng cho đến nay. Nó thậm chí có thể chuyển đổi sang và từ các định dạng bí truyền mà bạn thậm chí không biết đã tồn tại và áp dụng nhiều hiệu ứng hơn cho chúng khi bạn cần.
new123456

3
Chỉ cần làm rõ cho những người đọc không quen, convertlà một công cụ dòng lệnh cho ImageMagick.
Erika

2
và một điều rõ ràng hơn: nếu bạn sử dụng convert, bạn sẽ chuyển từ vector sang raster và mất khả năng thu phóng hình ảnh. trong cuốn sách của tôi, đó là inkscape mà thắng. nó chỉ phụ thuộc vào những gì bạn cần.
nsheff


0

như tôi biết, có một cách để vận hành Inkscape thông qua cmd - Tôi đã sử dụng một cái gì đó tương tự để xuất hàng loạt hình thu nhỏ PNG từ bộ sưu tập SVG khổng lồ của tôi. Vì Inkscape cũng hỗ trợ xuất PDF qua Cairo, nên cũng có thể xuất PDF. Tôi sẽ hỏi trên một số diễn đàn Inkscape. :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.