Phase 3 (Organize + robust save) + Phase 4 (Edit content); update docs
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.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# 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"
|
||||
Reference in New Issue
Block a user