Engine: - organize.rs: build_document(plan) core — insert/delete/rotate/crop/extract/merge/split - watermark.rs: watermark + header/footer via PdfPages::watermark, CID Unicode fonts - qpdf.rs: QPDF CLI wrapper — repair corrupt files, re-encrypt after edits, ensure_openable - edit.rs: MOAT — list_objects + apply_edits (SetText VN, Transform, Delete, Add/ReplaceImage) - Tests: organize/watermark/qpdf_safety/edit roundtrip — 43/43 engine tests green UI (Tauri): "Tổ chức trang" mode (grid + drag-reorder + multi-select), "Sửa nội dung" mode (WYSIWYG object overlay, edit-in-place), global undo/redo, robust file open. Corpus: add encrypted.pdf + corrupt-truncated.pdf fixtures. Docs: mark Phase 1-4 done in roadmap; document QPDF setup + engine module layout in 05-dev-setup; add 10-13 phase summaries & user-test checklists; README status.
34 lines
1.6 KiB
PowerShell
34 lines
1.6 KiB
PowerShell
# Tải QPDF prebuilt (qpdf/qpdf release MSVC x64) cho Windows
|
|
# và đặt qpdf.exe + DLL phụ thuộc vào qpdf/bin/ ở gốc workspace.
|
|
#
|
|
# Dùng: powershell -ExecutionPolicy Bypass -File scripts/fetch-qpdf.ps1
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$root = Split-Path -Parent $PSScriptRoot
|
|
$qpdfDir = Join-Path $root "qpdf"
|
|
$tmp = Join-Path $env:TEMP "qpdf-win-msvc64.zip"
|
|
|
|
Write-Output "Tra cuu release moi nhat cua qpdf/qpdf..."
|
|
$release = Invoke-RestMethod -Uri "https://api.github.com/repos/qpdf/qpdf/releases/latest" -UseBasicParsing
|
|
$asset = $release.assets | Where-Object { $_.name -like "*msvc64.zip" } | Select-Object -First 1
|
|
if (-not $asset) { throw "Khong tim thay asset msvc64.zip trong release $($release.tag_name)" }
|
|
|
|
Write-Output "Tai $($asset.name) (tu release $($release.tag_name))..."
|
|
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile $tmp -UseBasicParsing
|
|
|
|
$extractDir = Join-Path $env:TEMP "qpdf-extract"
|
|
if (Test-Path $extractDir) { Remove-Item -Recurse -Force $extractDir }
|
|
Expand-Archive -Path $tmp -DestinationPath $extractDir -Force
|
|
|
|
$binSrc = Get-ChildItem -Path $extractDir -Recurse -Directory -Filter "bin" | Select-Object -First 1
|
|
if (-not $binSrc) { throw "Khong tim thay thu muc bin/ sau khi giai nen" }
|
|
|
|
New-Item -ItemType Directory -Force -Path (Join-Path $qpdfDir "bin") | Out-Null
|
|
Copy-Item (Join-Path $binSrc.FullName "*.exe") (Join-Path $qpdfDir "bin") -Force
|
|
Copy-Item (Join-Path $binSrc.FullName "*.dll") (Join-Path $qpdfDir "bin") -Force
|
|
|
|
$exe = Join-Path $qpdfDir "bin\qpdf.exe"
|
|
if (-not (Test-Path $exe)) { throw "Khong tim thay qpdf.exe sau khi copy ($exe)" }
|
|
& $exe --version
|
|
Write-Output "Xong. qpdf.exe da dat tai: $exe"
|