İşte kullanmaya son verdiğim süreç. Kullandığım ana araç, metni tamamen dönüştürebilen Inkscape idi.
- PDF sayfalarını bölmek için JavaScript ile Adobe Acrobat Pro eylemlerini kullandı
- Windows Cmd'den SVG'ye dönüştürmek için Inkscape Portable 0.48.5'i çalıştırdı
- Windows Cmd ve Windows PowerShell kullanarak sorun yaşadığım belirli bir SVG XML özniteliğinde bazı manuel düzenlemeler yaptım
Ayrı Sayfalar: Adobe Acrobat Pro, JavaScript ile
Adobe Acrobat Pro Eylemlerini (eski adıyla Toplu İşleme) kullanarak, PDF sayfalarını ayrı dosyalara ayırmak için özel bir eylem oluşturun. Alternatif olarak PDF'leri GhostScript ile bölebilirsiniz
Acrobat JavaScript Action sayfaları bölmek için
/* 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'den SVG'ye Dönüştürme: Windows CMD toplu iş dosyası ile Inkscape
Windows Cmd'yi kullanarak, bir klasördeki tüm PDF dosyalarında döngü yapmak ve bunları SVG'ye dönüştürmek için toplu iş dosyası oluşturma
PDF'yi geçerli klasörde SVG'ye dönüştürmek için toplu iş dosyası
:: ===== 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
Olası varyasyonlardan dolayı SVG veya XML etiketlerini veya özniteliklerini manuel olarak kaba kuvvetle düzenlemenin en iyi uygulama olmadığını ve bunun yerine bir XML ayrıştırıcı kullanmanın en iyi uygulama olmadığını anlıyorum. Ancak, bir çizimdeki kontur genişliğinin çok küçük olduğu ve diğerinde font ailesinin yanlış tanımlandığı basit bir sorun yaşadım, bu yüzden basit bir bul ve değiştir yapmak için önceki Windows Cmd toplu komut dosyasını temelde değiştirdim. Tek değişiklik, arama dizesi tanımlarında ve bir PowerShell komutunu çağırmak için değiştirildi. PowerShell komutu, değiştirilen dosyayı bulup değiştirir ve eklenen bir sonekle kaydeder. Başka küçük bir temizleme yapılması gerekirse, ortaya çıkan SVG dosyalarını ayrıştırmak veya değiştirmek için daha iyi kullanılabilecek başka referanslar buldum.
SVG XML verilerini manuel olarak bulmak ve değiştirmek için 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 Ayrı Sayfalara JavaScript referansları
Ayrı Sayfalara GhostScript referansları
PDF'den SVG'ye Dönüştürme için Inkscape Komut Satırı referansları
Windows Cmd Toplu Dosya Komut Dosyası referansları
XML etiketi / nitelik değiştirme araştırması