PDF'yi temiz SVG'YE dönüştürmek mi? [kapalı]

bir PDF'yi SVG'YE dönüştürmeye çalışıyorum. Bununla birlikte, şu anda kullandığım, her metin parçasındaki her harf için bir yol haritalıyor, yani kaynak dosyasındaki metni değiştirirsem çirkin görünüyor.

SVG dönüştürücüsündeki en temiz PDF'nin ne olduğunu merak ediyordum, umarım bir şeye ihtiyaç duymayan metin alanları için bir yolu yoktur. Bildiğimiz gibi, PDF ve SVG oldukça benzer, bu yüzden orada iyi dönüştürücüler olduğunu varsayıyorum.

99
tarihinde sordu sashoalm 2012-04-24 00:48:37
kaynak

9 ответов

Inkscape SVG PDF dönüştürmek için Wikipedia birçok kişi tarafından kullanılır.

http://inkscape.org/

onlar bile bunu nasıl kullanışlı bir rehber var!

http://en.wikipedia.org/wiki/Wikipedia:Graphic_Lab/Resources/PDF_conversion_to_SVG#Conversion_with_Inkscape

82
cevap Saintt Sheldon Patnett 2012-04-24 00:53:12
kaynak

bir GUI açmadan, yalnızca komut satırında Inkscape kullanabilirsiniz. Bunu deneyin:

inkscape \
  --without-gui \
  --file=input.pdf \
  --export-plain-svg=output.svg 

tüm komut satırı seçeneklerinin tam listesi için inkscape --help çalıştırın .

76
cevap Kurt Pfeifle 2012-04-24 04:04:01
kaynak

şu anda grafik çıkışı için iyi desteği olan PDFBox kullanıyorum. Vektör vuruşlarını çıkarmak ve yazı tiplerini yönetmek için iyi bir destek var. Denemek için bazı iyi araçlar vardır (örneğin PDFReader Java Graphics2D olarak gösterecektir). grafik aracını Batik gibi bir SVG aracıyla kesebilirsiniz (bunu yapıyorum ve iyi yakalama sağlar).

SVG tüm PDF dönüştürmek için basit bir yolu yoktur - PDF'leri oluşturmak için kullanılan strateji ve araçlara bağlıdır. Bazı metin vektörlere dönüştürülür ve kolayca yeniden olamaz-vektör yazı tiplerini yüklemek ve onları bakmak zorunda.

güncelleme: Bunu şimdi Batik'i daha fazla kullanmayan paket PDF2SVG haline getirdim:

Bir dizi PDF'de test edilen

. 151980920 'oluşan SVG çıkış üretir

  • karakterleri bir <svg:text> karakter başına
  • <svg:path>
  • görüntüleri <svg:image>

daha sonraki paketler (umarım) karakterleri çalışan metne ve daha üst düzey grafik nesnelerine giden yollara dönüştürecektir

güncelleme: Şimdi SVG karakterlerinden çalışan metni yeniden oluşturabiliriz. Ayrıca diyagramları etki alanına özgü XML'YE (örn. kimyasal spektrum) dönüştürdük. Görmek https://bitbucket.org/petermr/svg2xml-dev . Alfa hala, ama yararlı bir hızda hareket ediyor. Herkes katılabilir!

güncellemesi. (@Tim Kelty) PDF2SVG üzerinde çalışmaya devam ediyoruz ve ayrıca (sınırlı) Java OCR ve daha üst düzey grafik ilkelerinin (oklar, kutular, vb.) oluşturulmasını sağlayan mansap araçları.) Bkz. https://bitbucket.org/petermr/imageanalysis https://bitbucket.org/petermr/diagramanalyzer https://bitbucket.org/petermr/norma ve https://bitbucket.org/petermr/ami-core . Bu bilimsel literatürden 100 milyon gerçekleri yakalamak için finanse edilen bir projedir (contentmine.org) çoğu PDF'DİR.

20
cevap peter.murray.rust 2015-01-25 12:39:38
kaynak

bu konu oldukça eski, ama burada bulduğum kullanışlı bir çözüm:

http://www.cityinthesky.co.uk/opensource/pdf2svg/

bir kez yüklü bir araç, pdf2png, komut satırında tam olarak işi sunuyor. Bitmap'ler de dahil olmak üzere şimdiye kadar onarılamaz sonuçlarla test ettim.

Düzenle: benim hatam, bu araç da harfleri yollara dönüştürür, bu nedenle başlangıçtaki adresi almaz soru. Ancak yine de iyi bir iş çıkarıyor ve svg dosyasındaki kodu değiştirmek istemeyen herkes için yararlı olabilir, bu yüzden gönderiyi bırakacağım.

16
cevap pierre 2015-02-06 01:46:44
kaynak

işte kullandığım süreç. Kullandığım ana araç, metni iyi dönüştürebilen Inkscape idi.

  • PDF sayfalarını
  • bölmek için JavaScript ile Adobe Acrobat Pro eylemlerini kullandı
  • 'INKSCAPE taşınabilir 0.48.5 SVG dönüştürmek için Windows Cmd
  • , Windows Cmd ve Windows PowerShell kullanarak sorunları olan belirli bir SVG XML özniteliğine bazı manuel düzenlemeler yaptı

ayrı sayfalar: JavaScript ile Adobe Acrobat Pro

Adobe Acrobat Pro eylemleri (eski Toplu İşleme) kullanarak PDF sayfalarını ayrı dosyalara ayırmak için özel bir eylem oluşturun. Alternatif olarak PDF'leri GhostScript

ile ayırabilirsiniz

Acrobat JavaScript Action to split pages

/* Extract Pages to Folder */

var re = /.*\/|\.pdf$/ig;
var filename = this.path.replace(re,"");

{
    for ( var i = 0;  i < this.numPages; i++ )
    this.extractPages
     ({
        nStart: i,
        nEnd: i,
        cPath : filename + "_s" + ("000000" + (i+1)).slice (-3) + ".pdf"
    });
};

PDF to SVG Conversion: Inkscape with Windows CMD batch file

Windows Cmd kullanarak bir klasördeki tüm PDF dosyaları döngü ve SVG

onları dönüştürmek için toplu iş dosyası oluşturdu

toplu dosya geçerli klasör

SVG PDF dönüştürmek için
:: ===== SETUP =====
@echo off
CLS
echo Starting SVG conversion...
echo.

:: setup working directory (if different)
REM set "_work_dir=%~dp0"
set "_work_dir=%CD%"

:: setup counter
set "count=1"

:: setup file search and save string
set "_work_x1=pdf"
set "_work_x2=svg"
set "_work_file_str=*.%_work_x1%"

:: setup inkscape commands
set "_inkscape_path=D:\InkscapePortable\App\Inkscape\"
set "_inkscape_cmd=%_inkscape_path%inkscape.exe"

:: ===== FIND FILES IN WORKING DIRECTORY =====
:: Output from DIR last element is single  carriage return character. 
:: Carriage return characters are directly removed after percent expansion, 
:: but not with delayed expansion.

pushd "%_work_dir%"
FOR /f "tokens=*" %%A IN ('DIR /A:-D /O:N /B %_work_file_str%') DO (
    CALL :subroutine "%%A"
)
popd

:: ===== CONVERT PDF TO SVG WITH INKSCAPE =====

:subroutine
echo.
IF NOT [%1]==[] (

    echo %count%:%1
    set /A count+=1

    start "" /D "%_work_dir%" /W "%_inkscape_cmd%" --without-gui --file="%~n1.%_work_x1%" --export-dpi=300 --export-plain-svg="%~n1.%_work_x2%"

) ELSE (
    echo End of output
)
echo.

GOTO :eof

:: ===== INKSCAPE REFERENCE =====

:: print inkscape help
REM "%_inkscape_cmd%" --help > "%~dp0\inkscape_help.txt"
REM "%_inkscape_cmd%" --verb-list > "%~dp0\inkscape_verb_list.txt"

Temizleme öznitelikleri: Windows Cmd ve PowerShell

potansiyel varyasyonlar nedeniyle SVG veya XML etiketlerini veya özniteliklerini manuel olarak kaba ve düzenlemek için en iyi uygulama olmadığını ve bunun yerine bir XML ayrıştırıcısı kullanması gerektiğini fark ettim. Ancak basit bir bir çizimdeki inme genişliğinin çok küçük olduğu ve başka bir yazı tipi ailesinin yanlış tanımlandığı sorun, bu yüzden temel olarak basit bir bulmak ve değiştirmek için önceki Windows Cmd toplu komut dosyasını değiştirdim. Tek değişiklik arama dizesi tanımlarına ve PowerShell komutunu çağırmak için değişiyordu. PowerShell komutu, değiştirilmiş dosyayı eklenen bir sonekle bulup değiştirir ve kaydeder. Ayrıştırmak için daha iyi kullanılabilecek başka referanslar buldum veya diğer bazı küçük temizleme yapılması gerekiyorsa sonuç SVG dosyalarını değiştirin.

SVG XML verilerini el ile bulmak ve değiştirmek için yapılan değişiklikler

:: setup file search and save string
set "_work_x1=svg"
set "_work_x2=svg"
set "_work_s2=_mod"
set "_work_file_str=*.%_work_x1%"

powershell -Command "(Get-Content '%~n1.%_work_x1%') | ForEach-Object {$_ -replace 'stroke-width:0.06', 'stroke-width:1'} | ForEach-Object {$_ -replace 'font-family:Times Roman','font-family:Times New Roman'} | Set-Content '%~n1%_work_s2%.%_work_x2%'"

umarım bu

birine yardımcı olabilir

Referanslar

Adobe Acrobat Pro eylemleri ve JavaScript referansları ayrı sayfalara

ayrı sayfalara GhostScript başvuruları

INKSCAPE komut satırı PDF'DEN SVG dönüşümüne referanslar

Windows Cmd toplu iş dosyası komut dosyası başvuruları

XML etiketi / öznitelik değiştirme araştırması

8
cevap ClearBlueSky85 2017-05-23 14:46:49
kaynak

SVG'YE DVI bir seçenek ise, bir SVG dosyasına bir DVI dosyası dönüştürmek için dvisvgm de kullanabilirsiniz. Bu, örneğin LaTeX formülleri için mükemmel bir şekilde çalışır ( --no-fonts seçeneği ile):

dvisvgm --no-fonts input.dvi -o output.svg

orada da pdf2svg hangi poppler kullanır ve SVG içine bir pdf dönüştürmek için kullanılır. Bunu denediğimde, SVG inkscape de mükemmel bir şekilde işlendi .

6
cevap dhaumann 2015-07-06 20:22:35
kaynak

Bash komut kendi SVG dosyasına bir PDF her sayfayı dönüştürmek için.

#!/bin/bash
#
#  Make one PDF per page using PDF toolkit.
#  Convert this PDF to SVG using inkscape
#

inputPdf=

pageCnt=$(pdftk $inputPdf dump_data | grep NumberOfPages | cut -d " " -f 2)

for i in $(seq 1 $pageCnt); do
    echo "converting page $i..."
    pdftk ${inputPdf} cat $i output ${inputPdf%%.*}_${i}.pdf
    inkscape --without-gui "--file=${inputPdf%%.*}_${i}.pdf" "--export-plain-svg=${inputPdf%%.*}_${i}.svg"
done
Png oluşturmak için

, --export-png vb. kullanın...

4
cevap Alain Pannetier 2015-12-06 19:18:42
kaynak

ben xfig mükemmel bir iş yaptığını buldum:

pstoedit -f fig foo.pdf foo.fig
xfig foo.fig

export to svg

ınkscape'den çok daha iyi bir iş çıkardı. Aslında muhtemelen bunu yapan pdtoedit idi.

1
cevap user877329 2015-05-26 10:41:24
kaynak

burada iki PDF render komut dosyaları için NodeJS REST apı. https://github.com/pumppi/pdf2images

komut dosyaları şunlardır: pdf2svg ve Imagemagicks dönüştürmek

0
cevap user257980 2016-04-03 11:22:36
kaynak

Diğer sorular svg pdf