Inilah proses yang akhirnya saya gunakan. Alat utama yang saya gunakan adalah Inkscape yang dapat mengonversi teks dengan baik.
- menggunakan tindakan Adobe Acrobat Pro dengan JavaScript untuk memisahkan lembar PDF
- menjalankan Inkscape Portable 0.48.5 dari Windows Cmd untuk mengkonversi ke SVG
- membuat beberapa pengeditan manual pada atribut SVG XML tertentu yang bermasalah dengan menggunakan Windows Cmd dan Windows PowerShell
Halaman Terpisah: Adobe Acrobat Pro dengan JavaScript
Menggunakan Tindakan Adobe Acrobat Pro (sebelumnya Pemrosesan Batch) membuat tindakan kustom untuk memisahkan halaman PDF menjadi file terpisah. Alternatifnya, Anda mungkin bisa membagi PDF dengan GhostScript
Acrobat JavaScript Action untuk membagi halaman
/* 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"
});
};
Konversi PDF ke SVG: Inkscape dengan file batch CMD Windows
Menggunakan Windows Cmd membuat file batch untuk mengulang melalui semua file PDF dalam folder dan mengubahnya menjadi SVG
File batch untuk mengonversi PDF ke SVG di folder saat ini
:: ===== 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"
Atribut pembersihan: Cmd Windows dan PowerShell
Saya menyadari ini bukan praktik terbaik untuk mengedit secara manual secara manual brute force tag atau atribut SVG atau XML karena variasi potensial dan harus menggunakan pengurai XML sebagai gantinya. Namun saya memiliki masalah sederhana di mana lebar guratan pada satu gambar sangat kecil, dan di gambar lain keluarga font salah diidentifikasi, jadi saya pada dasarnya memodifikasi skrip batch Windows Cmd sebelumnya untuk melakukan pencarian dan penggantian sederhana. Satu-satunya perubahan adalah definisi string pencarian dan perubahan untuk memanggil perintah PowerShell. Perintah PowerShell akan melakukan pencarian dan mengganti serta menyimpan file yang dimodifikasi dengan sufiks tambahan. Saya menemukan beberapa referensi lain yang bisa lebih baik digunakan untuk mengurai atau memodifikasi file SVG yang dihasilkan jika pembersihan kecil lainnya diperlukan.
Modifikasi untuk mencari dan mengganti data XML SVG secara manual
:: 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%'"
Semoga ini bisa membantu seseorang
Referensi
Actions Adobe Acrobat Pro dan referensi JavaScript ke Halaman Terpisah
Referensi GhostScript ke Halaman Terpisah
Referensi Inkscape Command Line untuk Konversi PDF ke SVG
Referensi Windows Cmd Batch File Script
Penelitian penggantian atribut / tag XML