Converta SVG para PDF em várias folhas


9

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

O arquivo com o qual estou trabalhando:

  • 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 experimentar sua solução.

Estou aberto a quase qualquer solução, seja extensões / scripts do Inkscape ou ferramentas de linha de comando. Só não quero mexer manualmente toda vez que preciso refazer a conversão.

Coisas que tentei e não funcionei:

  • O inkscape-pages adiciona suporte para várias páginas no Inkscape, mas não oferece suporte para separar um determinado arquivo nas páginas.

As ferramentas que funcionarão apenas com o formato de imagem rasterizada (como PNG ou JPG) não são aplicáveis :

Ferramentas que ouvi dizer que podem funcionar, mas não tenho certeza se o farão e como abordá-las:

Atualização: link para download adicionado .



Você pode usar o imagemagick (comando converter) para cortar as partes superior e inferior da imagem independentemente em dois arquivos pdf diferentes.
Harris

Por exemplo:convert filename.svg -crop 100%x50% +repage filename.pdf
Harris

@MadMike, você poderia mencionar seu fluxo de trabalho atual? (ou seja, como você está fazendo isso manualmente?)
user.dz 10/11/14

11
@Sneetsher Tenho um arquivo SVG de tamanho grande (2 x A3). Gostaria de convertê-lo em um formato (como PDF) que eu possa transportar para o trabalho e imprimi-lo a partir daí. No trabalho, terei apenas o Windows disponível. No momento, não se trata de fazê-lo manualmente ou não, mas de como fazê-lo.
21814 MadMike

Respostas:


1

Você já experimentou o pdfposterpacote? A partir do site do projeto : "Pdfposter pode ser usado para criar um grande cartaz por construí-la a partir de múltiplas páginas e / ou imprimi-lo em grandes media 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 juntas, criando o pôster. A página de entrada será redimensionada para obter o tamanho desejado. "

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


Quase funciona. Eu tentei pdfposter -m a3 -p 1x2a3 askUbuntu.pdf out.pdfo PDF resultante tem um fundo azul (pdfposter 0.6.0) em vez de branco. Você pode testá-lo, se quiser. Faça o download do PDF de origem aqui e repita a conversão, por favor. Você tem o mesmo resultado?
madmike

@MadMike: Recebo o mesmo fundo azul do seu PDF (mas branco com o meu). Você também usou 'Salvar como' no Inkscape para criar o PDF? Percebi que no seu PDF não posso selecionar o texto, enquanto no meu. Se eu selecionar a opção 'converter textos em caminhos' nas opções de exportação de PDF, recebo o mesmo fundo azul que você após o uso pdfposter. Para ser completo: eu tenho a mesma versão pdfpostere a versão 0.48.4 do Inkscape.
Ph0t0nix 11/11/14

Jup. Funciona perfeitamente. Não converter o texto em caminho enquanto salva em PDF faz a diferença. Agora, espero que a incorporação da fonte seja boa o suficiente para a impressora. ;)
madmike

Obrigado, o pdfposter também funcionou para mim. Eu só precisava obter sua versão de desenvolvimento ( gitlab.com/pdftools/pdfposter ), porque a versão do repositório oficial do Ubuntu (pdfposter 0.6.0-2) inverteu as cores preto e branco.
Michal Fapso

2

Você pode salvar diretamente a imagem como pdf do inkscape usando a resolução mais alta (dpi), por exemplo, 600 da impressora que planeja usar para impressão.

Depois, você pode usar o imagemagick (comando converter) 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 imagemagick e pdftk já estão instalados.


Você também pode tentar as seguintes opções para evitar que a imagem seja rasterizada:-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.pdfEu recebo um rasterized pdf com um tamanho de 49x35mm (maneira pequenos)
madmike

Isso fornece um pdf rasterizado:convert -density 90 askUbuntu.svg -crop 50%x100% +repage -trim -background black askUbuntu.pdf
Harris

@Harris, tanto quanto eu sei imagemagick não pode lidar com gráficos vetoriais. Faça o que fizer, a saída será sempre uma imagem rasterizada.
precisa

No site deles, eles dizem que o imagemagick usa o inkscape ou o rsvg-convert para manipular arquivos svg.
Harris

0

como não consegui obter seu arquivo (link quebrado), gerenciei com um PDF que tinha no meu computador. Enfim, é assim que eu procedi:

  • Iniciar o Scribus ( 1.4.3 no Ubuntu 12.04 LTS )
  • crie um novo documento A3 2 páginas com as opções "Página dupla" e "Iniciando na página esquerda" selecionadas (talvez não seja a tradução correta, pois estou trabalhando em uma versão francesa do Scribus).
  • crie um quadro de imagem nas duas páginas
  • importar PDF
  • ajuste o tamanho da imagem para enquadrar
  • exportar como PDF
  • imprima

O resultado está no arquivo que você pode baixar aqui: http://www.filedropper.com/2a3tar_1 (1,4 mês)

O problema que pode ocorrer está relacionado às margens técnicas das impressoras de mesa.

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


Atualizei o link para download.
madmike

0

SVG é um XML, você pode usar este script python para gerar fatias. Na verdade, ele não o divide, mas usa a mesma cópia do arquivo de entrada com valores diferentes de viewBoxpara 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. Gere 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.