Aqui está o processo que acabei usando. A principal ferramenta que usei foi o Inkscape, que era capaz de converter perfeitamente o texto.
- usou ações do Adobe Acrobat Pro com JavaScript para dividir as folhas PDF
- executou o Inkscape Portable 0.48.5 do Windows Cmd para converter para SVG
- fiz algumas edições manuais em um atributo XML SVG específico com o qual estava tendo problemas ao usar o Windows Cmd e o Windows PowerShell
Páginas separadas: Adobe Acrobat Pro com JavaScript
Usando o Adobe Acrobat Pro Actions (anteriormente Batch Processing), crie uma ação personalizada para separar as páginas PDF em arquivos separados. Como alternativa, você pode dividir PDFs com GhostScript
Ação Acrobat JavaScript 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"
});
};
Conversão de PDF para SVG: Inkscape com arquivo de lote CMD do Windows
Usando o Windows Cmd, criou um arquivo em lote para percorrer todos os arquivos PDF em uma pasta e convertê-los em SVG
Arquivo em lote para converter PDF em SVG na pasta atual
:: ===== 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 limpeza: Windows Cmd e PowerShell
Sei que não é uma prática recomendada editar manualmente a força bruta de tags ou atributos SVG ou XML devido a variações em potencial e, em vez disso, deveria usar um analisador XML. No entanto, tive um problema simples em que a largura do traço em um desenho era muito pequena e em outro a família de fontes estava sendo identificada incorretamente, então basicamente modifiquei o script de lote anterior do Windows Cmd para fazer um simples localizar e substituir. As únicas alterações foram nas definições de string de pesquisa e na mudança para chamar um comando do PowerShell. O comando PowerShell executará um localizar e substituir e salvar o arquivo modificado com um sufixo adicionado. Eu encontrei algumas outras referências que poderiam ser mais bem usadas para analisar ou modificar os arquivos SVG resultantes se alguma outra limpeza secundária for necessária.
Modificações para localizar e substituir manualmente dados SVG XML
:: 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 isso possa ajudar alguém
Referências
Ações do Adobe Acrobat Pro e referências JavaScript para páginas separadas
Referências do GhostScript para páginas separadas
Referências de linha de comando do Inkscape para conversão de PDF para SVG
Referências do Windows Cmd Batch File Script
Pesquisa de substituição de tag / atributo XML