Este es el proceso que terminé usando. La herramienta principal que utilicé fue Inkscape, que pudo convertir texto correctamente.
- usó acciones de Adobe Acrobat Pro con JavaScript para dividir las hojas PDF
- ejecutó Inkscape Portable 0.48.5 desde Windows Cmd para convertir a SVG
- Hice algunas ediciones manuales en un atributo XML de SVG en particular con el que tenía problemas al usar Windows Cmd y Windows PowerShell
Páginas separadas: Adobe Acrobat Pro con JavaScript
El uso de Acciones de Adobe Acrobat Pro (anteriormente Procesamiento por lotes) crea una acción personalizada para separar páginas PDF en archivos separados. Alternativamente, puede dividir archivos PDF con GhostScript
Acción de JavaScript de Acrobat para dividir páginas
/* 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"
});
};
Conversión de PDF a SVG: Inkscape con archivo por lotes CMD de Windows
El uso de Windows Cmd creó un archivo por lotes para recorrer todos los archivos PDF en una carpeta y convertirlos a SVG
Archivo por lotes para convertir PDF a SVG en la carpeta actual
:: ===== 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"
Atributos de limpieza: Windows Cmd y PowerShell
Me doy cuenta de que no es una buena práctica editar manualmente por fuerza bruta etiquetas o atributos SVG o XML debido a posibles variaciones y debería usar un analizador XML en su lugar. Sin embargo, tuve un problema simple en el que el ancho del trazo en un dibujo era muy pequeño y en otro la familia de fuentes se identificaba incorrectamente, por lo que básicamente modifiqué el script por lotes de Windows Cmd anterior para hacer una búsqueda y reemplazo simple. Los únicos cambios fueron en las definiciones de la cadena de búsqueda y cambiar para llamar a un comando de PowerShell. El comando de PowerShell realizará una búsqueda, reemplazará y guardará el archivo modificado con un sufijo agregado. Encontré algunas otras referencias que podrían usarse mejor para analizar o modificar los archivos SVG resultantes si se necesita realizar alguna otra limpieza menor.
Modificaciones para buscar y reemplazar manualmente datos XML SVG
:: 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%'"
Espero que esto pueda ayudar a alguien
Referencias
Acciones de Adobe Acrobat Pro y referencias de JavaScript a páginas separadas
Referencias de GhostScript a páginas separadas
Referencias de la línea de comandos de Inkscape para la conversión de PDF a SVG
Referencias de secuencias de comandos de archivos por lotes de Windows Cmd
Investigación de reemplazo de atributos / etiquetas XML