Take the 2-minute tour ×
Graphic Design Stack Exchange is a question and answer site for Graphic Design professionals, students, and enthusiasts. It's 100% free, no registration required.

I've been struggling to do something that would seem pretty basic:

In Inkscape, how can I resize the document and its content (i.e. drawings) at the same time?

A little bit of context: I want to resize a fairly large number of SVG documents from The Noun Project (they are typically 100x100px docs) without having to explicitly resize the actual drawings.

N.B: If there's a command line solution, I can work with that too!

share|improve this question
    
I'm not sure of your end goal, but AFAIK, the document area is somewhat arbitrary aside from printing, where you have an option to only print the document area. However, you can also only print the object area as well, so that may be a way to get around your hurdle. –  DA01 Mar 17 '12 at 18:48
    
@DA01 Well, I think the document's pretty helpful when you export to Bitmap (which is what I'm doing). –  julien_c Mar 17 '12 at 18:52
    
By the way, is there a way to resize an object that doesn't involve dragging corners, but where you would explicitly specify a size? That might be the thing I'm after :) –  julien_c Mar 17 '12 at 18:55
1  
even then it's an arbitrary option. You can just as easily draw a containing box as your export 'zone'. In fact, that's how I usually prefer to do it. As for resizing, you can select your objects and then either a) use the status bar on the top and type in your size changes or b) go to OBJECT > TRANSFORM and enter values in the Transform pallet –  DA01 Mar 17 '12 at 22:05
    
@julien_c: I think the point here is that the objects are straight vector art and have no size per se until you output them to a raster device (or file). Their size (inches,pixels, cubits) is, in effect, irrelevant. –  horatio Mar 22 '12 at 20:48

2 Answers 2

You haven't mentioned what OS you're running. I'm using Ubuntu, and I've been able to use librsvg2 successfully.

If you have access to Ubuntu, here's what you can do. First, install librsvg2:

sudo apt-get install librsvg2-bin

Then, cd to the directory that has your SVGs (make sure it only has SVGs!) and use a command like the following:

for i in *; do rsvg-convert $i -w 160 -h 160 -f svg -o `echo $i | sed -e 's/svg$/new.svg/'`; done

This will create a new batch of SVGs with dimensions 200px by 200px, and saved as "original-file-name.new.svg"

Calculating dimensions is somewhat confusing. For converting SVG to SVG, you need to do a little bit of math. The "height" and "width" options in rsvg-convert use pt, not px, in such cases, so use 80 if you want 100px, 120 if you want 150px, and so on.

You can also use rsvg-convert to output PNGs. It is much better at rasterizing the file than ImageMagick, at least in my experience. Notice that you need to change -f to png, you need to change the output save pattern from 's/svg$/new.svg/' to 's/svg$/png/', and you enter the width and height that you want as the pixel values.

for i in *; do rsvg-convert $i -w 200 -h 200 -f png -o `echo $i | sed -e 's/svg$/png/'`; done
share|improve this answer
    
By the way, I'm just assuming that you need to do this in batch mode to a large number of SVGs. If not, you can still use the rsvg-convert as such: rsvg-convert noun_project_1576.svg -w 320 -h 160 -f svg -o noun_project_1576-skewed.svg which will take a source file named "noun_project_1576" and skew it to be 400px by 200px and rename it "noun_project_1576-skewed". –  Ananda Mahto Mar 24 '12 at 15:01
    
@julien_c, just following up: did you try this suggestion and have any luck with it? –  Ananda Mahto May 5 '12 at 18:09
up vote 1 down vote accepted

There is currently no native way to do that in Inkscape. The only way is to resize content and document separately.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.