Đây là quá trình mà tôi đã kết thúc bằng cách sử dụng. Công cụ chính mà tôi sử dụng là Inkscape có thể chuyển đổi văn bản.
- đã sử dụng các hành động của Adobe Acrobat Pro với JavaScript để chia nhỏ các trang PDF
- đã chạy Inkscape Portable 0.48.5 từ Windows Cmd để chuyển đổi sang SVG
- đã thực hiện một số chỉnh sửa thủ công đối với một thuộc tính SVG XML cụ thể mà tôi đang gặp sự cố khi sử dụng Windows Cmd và Windows PowerShell
Các trang riêng biệt: Adobe Acrobat Pro với JavaScript
Sử dụng Adobe Acrobat Pro Actions (trước đây là Batch Processing) tạo một hành động tùy chỉnh để tách các trang PDF thành các tệp riêng biệt. Ngoài ra, bạn có thể chia nhỏ các tệp PDF bằng GhostScript
Acrobat JavaScript Hành động để chia nhỏ các trang
/* 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"
});
};
Chuyển đổi PDF sang SVG: Inkscape với tệp hàng loạt CMD của Windows
Sử dụng Windows Cmd đã tạo tệp hàng loạt để lặp qua tất cả các tệp PDF trong một thư mục và chuyển đổi chúng thành SVG
Hàng loạt tệp để chuyển đổi PDF sang SVG trong thư mục hiện tại
:: ===== 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"
Thuộc tính dọn dẹp: Windows Cmd và PowerShell
Tôi nhận thấy không phải là phương pháp hay nhất để chỉnh sửa thủ công các thẻ hoặc thuộc tính SVG hoặc XML do các biến thể tiềm ẩn và thay vào đó nên sử dụng trình phân tích cú pháp XML. Tuy nhiên, tôi đã gặp một vấn đề đơn giản là chiều rộng nét vẽ trên một bản vẽ rất nhỏ và trên một bản vẽ khác, họ phông chữ đang được xác định không chính xác, vì vậy về cơ bản tôi đã sửa đổi tập lệnh lô Cmd trước đó của Windows để thực hiện tìm và thay thế đơn giản. Các thay đổi duy nhất là định nghĩa chuỗi tìm kiếm và thay đổi để gọi lệnh PowerShell. Lệnh PowerShell sẽ thực hiện tìm và thay thế và lưu tệp đã sửa đổi với một hậu tố được thêm vào. Tôi đã tìm thấy một số tham chiếu khác có thể được sử dụng tốt hơn để phân tích cú pháp hoặc sửa đổi các tệp SVG kết quả nếu cần thực hiện một số thao tác dọn dẹp nhỏ khác.
Các sửa đổi để tìm và thay thế dữ liệu SVG XML theo cách thủ công
:: 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%'"
Hy vọng điều này có thể giúp ai đó
Người giới thiệu
Adobe Acrobat Pro Actions và JavaScript tham chiếu đến các trang riêng biệt
Tham chiếu GhostScript đến các Trang riêng biệt
Tham chiếu Dòng lệnh Inkscape cho Chuyển đổi PDF sang SVG
Tham chiếu tập lệnh tệp hàng loạt Windows Cmd
Nghiên cứu thay thế thẻ / thuộc tính XML