Birkaç sayfada SVG'yi PDF'ye dönüştürme


9

Inkscape'te oluşturulmuş bir SVG dosyam var. Sonunda büyük bir poster oluşturmak için birden fazla kağıda yazdırmak istiyorum. Herhangi bir işletim sisteminden yazdırabilmem için bir PDF'ye dönüştürülmüş bu çoklu sayfaları istiyorum.

Çalıştığım dosya:

  • SVG'nin boyutu 840 mm x 297 mm'dir. (genişlik x yükseklik)
  • İki A3 sayfalı (420 mm x 297 mm) bir PDF oluşturun.

Sen edebilirsiniz dosyayı indirmek çözümünüzü kendiniz denemek istiyorum.

Inkscape uzantıları / komut dosyaları veya komut satırı araçları olsun, hemen hemen tüm çözümlere açığım. Ben her dönüşüm yeniden yapmak zorunda her zaman elle karışıklık istemiyorum.

Denediğim ve çalışmadığım şeyler:

  • inkscape-pages , Inkscape'e birden fazla sayfa desteği ekler, ancak belirli bir dosyayı sayfalara ayırma desteği yoktur.

(PNG veya JPG gibi) raster görüntü formatı ile sadece çalışma vardır edecek Araçlar no-go :

İşe yarayabileceğini duyduğum ancak çalışıp çalışmayacaklarından ve onlara nasıl yaklaşacağından emin olmadığım araçlar:

Güncelleme: İndirme bağlantısı eklendi .


Şu soruya bir göz atın: Poster basma (birkaç kağıda)
fret

Görüntünün üst ve alt kısımlarını bağımsız olarak iki farklı pdf dosyasına kırpmak için imagemagick (komut dönüştürme) kullanabilirsiniz.
Harris

Örneğin:convert filename.svg -crop 100%x50% +repage filename.pdf
Harris

@MadMike, Mevcut iş akışınızdan bahseder misiniz? (ör. elle nasıl yapıyorsunuz?)
user.dz

1
@Sneetsher Büyük boyutlu (2 x A3) bir SVG dosyam var. Çalışmak ve oradan yazdırmak için taşıyabileceğim bir formatta (PDF gibi) dönüştürmek istiyorum. İş yerinde yalnızca Windows'ım olacak. Şu anda bu, manuel olarak yapılıp yapılmayacağı değil, nasıl yapılacağıdır.
MadMike

Yanıtlar:


1

pdfposterPaketi denedin mi? Gönderen projenin internet sitesinde : "Pdfposter birden çok sayfa onu bina ve / veya büyük medya üzerine yazdırarak büyük bir poster oluşturmak için kullanılabilecek Normalde tek bir sayfada baskı, girdi olarak bir PDF dosyası beklediği çıkışı yine bir olduğunu.. PDF dosyası, belki birlikte poster oluşturmak için birden fazla sayfa içerebilir. Giriş sayfası, istenen boyutu elde etmek için ölçeklendirilir. "

Man sayfasından hızlı bir örnek denedim: pdfposter -mA3 -pA0 askUbuntu.pdf printer-pages.pdförnek dosyanızla (Inkscape'de PDF'ye dönüştürdüm) ve işe yarıyor: 2 × 3 ızgarada ayarlanması gereken 6 A3 sayfa.


Neredeyse işe yarıyor. Ben pdfposter -m a3 -p 1x2a3 askUbuntu.pdf out.pdfortaya çıkan PDF beyaz yerine mavi bir arka plan (pdfposter 0.6.0) var denedim . İsterseniz kendiniz test edebilirsiniz. Kaynak PDF'yi buradan indirin ve dönüşümü tekrarlayın, lütfen. Aynı sonucu aldınız mı?
MadMike

@MadMike: PDF'nizle aynı mavi arka planı alıyorum (ancak benimki ile beyaz olanı). PDF'yi oluşturmak için Inkscape'te 'Farklı kaydet'i de kullandınız mı? PDF'nizde metni seçemediğimi fark ettim, oysa benimkinde. PDF dışa aktarma seçeneklerinde 'metinleri yollara dönüştür' seçeneğini seçersem kullandıktan sonra aynı mavi arka planı alırım pdfposter. pdfposterTamlık için: Inkscape'in aynı sürümüne ve 0.48.4 sürümüne sahibim.
ph0t0nix

Jup. Mükemmel çalışıyor. Değil PDF tasarrufu farklılık yaratıyorsa yoluna metin dönüştürülüyor. Şimdi yazı tipi gömme yazıcı için yeterince iyi umuyoruz. ;)
MadMike

Teşekkürler, pdfposter benim için de çalıştı. Resmi Ubuntu deposundan (pdfposter 0.6.0-2) tersine çevrilmiş siyah ve beyaz renkleri değiştirdiğinden geliştirme sürümünü ( gitlab.com/pdftools/pdfposter ) almak zorunda kaldım .
Michal Fapso

2

Baskı için kullanmayı planladığınız yazıcının en yüksek çözünürlüğünü (dpi) (600) kullanarak doğrudan inkscape'ten pdf olarak görüntü olarak kaydedebilirsiniz.

Daha sonra, görüntünün üst ve alt kısımlarını bağımsız olarak iki farklı pdf dosyasına kırpmak için imagemagick (komut dönüştürme) kullanabilirsiniz. Örneğin (bir terminale yazılmıştır):

convert askUbuntu.pdf -crop 100%x50% +repage askUbuntuSplit.pdf

Daha sonra aşağıdakileri kullanarak ayrı ayrı pdf dosyalarına bölebilirsiniz:

pdftk filename.pdf burst

Sanırım imagemagick ve pdftk zaten kurulu.


Görüntünün rasterleştirilmesini önlemek için aşağıdaki seçenekleri de deneyebilirsiniz:-density 600 -define psd:fit-page=2338x -resize 2338x
Harris

convert banner_eingang5.svg -density 600 -define psd:fit-page=2338x -resize 2338x -crop 50%x100% +repage filename.pdfBen olsun rasterized 49x35mm boyutunda pdf (küçük yol)
madmike

Bu size rasterleştirilmiş bir pdf verir mi:convert -density 90 askUbuntu.svg -crop 50%x100% +repage -trim -background black askUbuntu.pdf
Harris

@Harris bildiğim kadarıyla imagemagick vektör grafikleri işleyemiyor. Ne yaparsanız yapın çıktı her zaman rasterleştirilmiş bir görüntü olacaktır.
Glutanimate

Web sitelerinde imagemagick'in svg dosyalarını işlemek için inkscape veya rsvg-convert kullandığını söylüyorlar.
Harris

0

dosyanızı alamadım (bozuk bağlantı) Bilgisayarımda sahip olduğum bir PDF ile başardım. Her neyse, ben böyle devam ettim:

  • Scribus'u Başlat ( Ubuntu 12.04 LTS'de 1.4.3 )
  • "Çift Sayfa" ve "Sol sayfadan başlayarak" seçenekleriyle yeni A3 2 sayfalık bir belge oluşturun (Fransızca Scribus sürümünde çalıştığımdan dolayı doğru çeviri olmayabilir).
  • iki sayfa üzerinde bir resim çerçevesi oluşturma
  • PDF'yi içe aktar
  • görüntü boyutunu çerçeveye sığdır
  • PDF olarak dışa aktar
  • yazdır

Sonuç arşivde buradan indirebilirsiniz: http://www.filedropper.com/2a3tar_1 (1.4 Mo)

Ortaya çıkabilecek sorun, masaüstü yazıcıların sahip olduğu teknik kenar boşluklarıyla ilgilidir.

Bu durumda, sağlanan 2A3bis.sla dosyasındaki gibi üst üste gelen 2 resim çerçevesi yapabilirsiniz .


İndirme bağlantısını güncelledim.
MadMike

0

SVG bir XML'dir, dilimler oluşturmak için bu python komut dosyasını kullanabilirsiniz. Aslında, onu dilimlemez, ancak viewBoxyalnızca hedef alanı göstermek için farklı değerlere sahip giriş dosyasının aynı kopyasını kullanır .

svg_slice.py

#!/usr/bin/env python

import sys, os.path
import xml.etree.ElementTree as ET

fin=sys.argv[-1]
hsplit=int(sys.argv[1])
vsplit=int(sys.argv[2])

tree = ET.parse(fin)
root = tree.getroot()

hstep=float(root.attrib['width'])/hsplit
vstep=float(root.attrib['height'])/vsplit

root.attrib['width']=str(hstep)
root.attrib['height']=str(vstep)

for i in range(hsplit):
    for j in range(vsplit):
        root.attrib['viewBox']='%.4f %.4f %.4f %.4f' % (i*hstep, j*vstep, hstep, vstep)
        tree.write('cell_%i-%i_%s' % (i,j,os.path.basename(fin)))
  1. Dilimler oluşturun

    python svg_slice.py 2 1 askUbuntu.svg
    

    yani: 2x1 ızgara

  2. Ardından her dilim / hücre için PDF'yi dışa aktarmak için Inkscape'i kullanın

    for i in $(ls cell_*); do inkscape $i --export-pdf=$i.pdf; done;
    

ls cell_*

cell_0-0_askUbuntu.svg      cell_1-0_askUbuntu.svg
cell_0-0_askUbuntu.svg.pdf  cell_1-0_askUbuntu.svg.pdf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.