Converter SVG para PDF em várias planilhas

8

Eu tenho um arquivo SVG criado no Inkscape. Quero imprimi-lo em várias folhas para finalmente formar um grande cartaz. Eu preciso que essas várias folhas sejam convertidas em um PDF para que eu possa imprimi-lo em qualquer sistema operacional.

O arquivo com o qual estou trabalhando:

  • O SVG tem um tamanho de 840 mm x 297 mm. (largura x altura)
  • Gere um PDF com duas folhas A3 (420 mm x 297 mm).

Você pode baixar o arquivo se quiser testar sua solução por conta própria.

Estou aberto a quase todas as soluções, sejam extensões / scripts do Inkscape ou ferramentas de linha de comando. Eu só não quero mexer manualmente toda vez que eu tenho que refazer a conversão.

Coisas que eu tentei e não funcionaram:

  • As páginas do inkscape adicionam suporte a várias páginas no Inkscape, mas não há suporte para separar um determinado arquivo das páginas.

As ferramentas que funcionam apenas com o formato de imagem raster (como PNG ou JPG) são um no-go :

Ferramentas Ouvi dizer que isso pode funcionar, mas onde não tenho certeza se serão e como abordá-las:

Atualização: Adicionado link de download .

    
por MadMike 04.11.2014 / 23:36

4 respostas

1

Já experimentou o pacote pdfposter ? A partir do site do projeto : "O Pdfposter pode ser usado para criar um pôster grande construindo-o a partir de várias páginas e / ou imprimi-lo em mídia grande.Ele espera como entrada um arquivo PDF, normalmente a impressão em uma única página.A saída é novamente um arquivo PDF, talvez contendo várias páginas juntos construindo o cartaz.A página de entrada será dimensionada para obter o tamanho desejado. "

Eu tentei um exemplo rápido da página man: pdfposter -mA3 -pA0 askUbuntu.pdf printer-pages.pdf com seu arquivo de amostra (que converti para PDF no Inkscape), e parece funcionar: 6 páginas A3 que precisam ser configuradas em uma grade 2 × 3 .

    
por ph0t0nix 11.11.2014 / 22:45
2

Você pode salvar como imagem do pdf a partir do inkscape usando diretamente o mais alto resolução (ppp), digamos 600, da impressora que você planeja usar para impressão.

Em seguida, você pode usar o imagemagick (comando convert) para cortar as partes superior e inferior da imagem independentemente em dois arquivos PDF diferentes. Por exemplo (digitado em um terminal):

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

Você pode dividi-lo em arquivos PDF individuais usando:

pdftk filename.pdf burst

Presumo que o imagemagick e o pdftk já estão instalados.

    
por Harris 07.11.2014 / 10:33
0

como eu não consegui pegar o seu arquivo (link quebrado) eu consegui com um PDF que eu tinha no meu computador. De qualquer forma, foi assim que eu continuei:

  • Inicie o Scribus ( 1.4.3 no Ubuntu 12.04 LTS )
  • crie um novo documento de páginas A3 2 com as opções "Página dupla" e "Iniciando na página esquerda" selecionada (talvez não a tradução correta como Eu estou trabalhando em uma versão francesa do Scribus).
  • crie um quadro de imagem nas duas páginas
  • importar PDF
  • definir o tamanho da imagem ajustado ao frame
  • exportar como PDF
  • imprima

O resultado está no arquivo que você pode baixar aqui: link (1,4 Mb)

O problema que pode ocorrer está relacionado às margens técnicas que as impressoras desktop normalmente têm.

Neste caso, você pode criar 2 imagens que se sobrepõem como no arquivo 2A3bis.sla fornecido.

    
por fremo 12.11.2014 / 19:40
0

O SVG é um XML, você pode usar este script python para gerar fatias. Na verdade, ele não o corta, mas usa a mesma cópia do arquivo de entrada com valores diferentes de viewBox para mostrar apenas a área de destino.

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. Gerar fatias

    python svg_slice.py 2 1 askUbuntu.svg
    

    ou seja: grade 2x1

  2. Em seguida, use o Inkscape para exportar PDF para cada fatia / célula

    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
    
por user.dz 12.11.2014 / 22:33