Hier ist der Prozess, den ich letztendlich verwendet habe. Das Hauptwerkzeug, das ich benutzte, war Inkscape, das Text in Ordnung konvertieren konnte.
- verwendete Adobe Acrobat Pro-Aktionen mit JavaScript, um die PDF-Blätter aufzuteilen
- führte Inkscape Portable 0.48.5 von Windows Cmd aus, um es in SVG zu konvertieren
- Ich habe einige manuelle Änderungen an einem bestimmten SVG-XML-Attribut vorgenommen, mit dem ich Probleme hatte, indem ich Windows Cmd und Windows PowerShell verwendet habe
Separate Seiten: Adobe Acrobat Pro mit JavaScript
Erstellen Sie mithilfe von Adobe Acrobat Pro-Aktionen (früher Stapelverarbeitung) eine benutzerdefinierte Aktion, um PDF-Seiten in separate Dateien zu trennen. Alternativ können Sie PDFs möglicherweise mit GhostScript aufteilen
Acrobat JavaScript-Aktion zum Teilen von Seiten
/* 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-zu-SVG-Konvertierung: Inkscape mit Windows CMD-Batchdatei
Unter Verwendung von Windows Cmd wurde eine Batchdatei erstellt, um alle PDF-Dateien in einem Ordner zu durchlaufen und sie in SVG zu konvertieren
Batch-Datei zum Konvertieren von PDF in SVG im aktuellen Ordner
:: ===== 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"
Bereinigungsattribute: Windows Cmd und PowerShell
Mir ist klar, dass es aufgrund möglicher Abweichungen nicht empfehlenswert ist, SVG- oder XML-Tags oder -Attribute manuell zu bearbeiten, und stattdessen einen XML-Parser verwenden sollte. Ich hatte jedoch ein einfaches Problem, bei dem die Strichbreite in einer Zeichnung sehr klein war und in einer anderen die Schriftfamilie falsch identifiziert wurde. Daher habe ich das vorherige Windows-Cmd-Batch-Skript grundlegend geändert, um ein einfaches Suchen und Ersetzen durchzuführen. Die einzigen Änderungen betrafen die Definitionen der Suchzeichenfolgen und das Aufrufen eines PowerShell-Befehls. Der PowerShell-Befehl führt ein Suchen und Ersetzen durch und speichert die geänderte Datei mit einem hinzugefügten Suffix. Ich habe einige andere Referenzen gefunden, die besser zum Parsen oder Ändern der resultierenden SVG-Dateien verwendet werden könnten, wenn eine andere kleinere Bereinigung durchgeführt werden muss.
Änderungen zum manuellen Suchen und Ersetzen von SVG-XML-Daten
:: 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%'"
Hoffe das könnte jemandem helfen
Verweise
Adobe Acrobat Pro-Aktionen und JavaScript-Verweise auf separate Seiten
GhostScript verweist auf separate Seiten
Inkscape-Befehlszeilenreferenzen für die Konvertierung von PDF in SVG
Windows Cmd Batch File Script-Referenzen
Forschung zum Ersetzen von XML-Tags / Attributen