私は、PlantUMLによって生成されたSVG画像を持っています。これには、キャンバスの外側に描画の一部が含まれています。このような画像を使用するのは難しく、描画をキャンバスサイズにトリミングする必要があります。とにかくスクリプトを使用してUML図を作成しているので、そこでトリミングを実行するのも非常に効率的です。
これまでに2つのことを試しました:a)キャンバスのサイズを変更して、Inkscapeで描画します
inkscape --verb=FitCanvasToDrawing --verb=FileSave --verb=FileClose *.svg
これは正常に動作しますが、描画をキャンバスサイズにトリミングする必要があり、この操作は使用できないようです。
b)rsvg-convertでサイズ変更
rsvg-convert image.svg -w 1870 -h 1195 -f svg -o image.svg
これは正確に希望のサイズにトリミングしますが、SVGに埋め込まれたいくつかのバイナリイメージがあるため、イメージサイズは最大10倍に増加します。これは私には受け入れられません。
キャンバスサイズで結構です。キャンバスの外側にある部分を持つすべてのテキスト、線、および長方形をトリミングする必要があります。そのためには、バウンディングボックスとキャンバスボックスを比較する必要があります。これは、シェルスクリプトだけの方法です。
—
divanov 2014年
ああ...インクスケープに怒っていたのはなぜそれができないのか覚えています。バグレポートも含まれていました。当時彼らはそれについて何もしていませんでした。また、pdfファイルから見えない範囲外のものを削除する標準ツールはありません(もちろん、Acrobat Proはここで最悪の1つです)。ただし、部分的に表示されているものだけをクリップする場合は、コンテンツ全体をグループ化し、境界ボックスサイズのクリップをすべてに配置できます。ただし、それらはまだファイル内にあり、スペースを占有します。
—
オリオン2014年
提案ありがとうございます。sedでxmlを変更することは少し危険ですが、手動で編集するよりも優れています。
—
divanov 2014年
svg
formatはxmlベースのASCII形式であるため、最も簡単な方法はsed
、境界ボックスを設定する行を挿入または変更するために、またはお気に入りのテキスト操作ツールを使用することです。これは、ファイルの他のコンテンツには影響しません。例のsvgファイル(テキストエディターで)に対して手動で一度実行してから、アクションをスクリプトに変換します。