anoni-net / anoni-net/docs

小工具提案:PDF 整理與外洩檢查

Đang mở
#513 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
enhancement
Ngôn ngữ chính
JavaScript
Star
47
Fork
7
Merge trung bình
2 giờ 42 phút
Pull request đã merge (30 ngày)
291

Mô tả

需求依據見 #512。六組角色調查裡有四組把 PDF 處理列在前面,是收斂最強的一項。

## 一頁兩件事

### 整理

合併、分割、抽頁、刪頁、旋轉。這是讀者實際會回來用的部分。

現行的免費線上服務要把整份檔案上傳。以 iLovePDF 為例,隱私政策寫 `will delete the files of your Content within TWO (2) HOURS of being processed`,也明寫不拿內容訓練 AI。政策寫得乾淨,但兩小時內完整檔案確實在對方伺服器上,而使用者多半沒讀過那份政策。

### 外洩檢查

把 PDF 的文字層整份攤開。你以為遮掉的名字如果出現在裡面,遮蔽就是無效的。順便列出附件、註解與表單欄位。

這是跟一般線上 PDF 服務的差別,它給的是別人不給的東西。黑框畫在視覺層而文字層原封不動是最經典的外洩方式,activePDF 執行長談美國司法部報告時說 `Using Acrobat, I'm actually able to move the black boxes around. The text is still there.`([Cornell CS 存檔](https://www.cs.cornell.edu/info/people/gries/howbushoperates/justicecensoring.html))。

站上 `redact.js` 已經把圖片那一側做對了,會重新編碼並逐像素確認純黑,PDF 這一側目前完全沒有覆蓋。

## 為什麼落在這個站

`stripmeta.js` 已經在動態載入 pdf-lib,`utils/strip-metadata.md` 已經有一整節在解釋 PDF 的交叉索引表與物件壓縮。領域知識與 vendor 檔都現成。

分組落在「送出去之前」,那一組目前只有兩支(檔案 metadata 清除器、截圖遮蔽),是五組裡最薄的。

## 相依與分期

**第一期(整理)零新相依。** pdf-lib 已經在 `utils/vendor/pdf-lib.min.js`(317 KB),合併、分割、抽頁、旋轉都做得到,沿用 `stripmeta.js` 的動態載入寫法。

**第二期(檢查)需要 pdf.js。** 文字抽取 pdf-lib 做不到。`pdfjs-dist` 的 `pdf.min.mjs` 385 KB 加 `pdf.worker.min.mjs` 1015 KB,合計約 1.4 MB,是目前最大那份 vendor 檔的四倍多。全站離線總量 41.6 MB 吃得下,但這是唯一的實質成本。

先出第一期看反應,再決定要不要付第二期的 1.4 MB。

## 互動成本預估

依 anoni.net 小工具的慣例,開工前先估輸入點:

| 動作 | 輸入點 |
|---|---|
| 選檔案 | 1 |
| 選要做哪一種(合併 / 分割 / 抽頁 / 旋轉) | 1 |
| 選頁面(縮圖點選,不是輸入框) | 視需求 |
| 下載 | 1 |

常駐輸入點三個,選頁走縮圖點選。壓縮暫時不做,那需要重新編碼影像,複雜度跟前四項不同級。

## 待辦

- [ ] 第一期:`docs/zh-TW/js/pdfkit.js`(暫名)與 `docs/zh-TW/utils/pdf.md`
- [ ] 三語系頁面與 `js/` 的 symlink(en 與 zh-CN 逐檔指向 zh-TW)
- [ ] nav 收進「送出去之前」,索引頁補卡片(`tools/test_utils_index_order.mjs` 會擋)
- [ ] `tools/test_pdfkit.mjs`:頁面操作的正確性,以及原始碼沒有任何送出或留存資料的手段
- [ ] `offline_assets` 列入 pdf-lib,離線副本要能處理 PDF
- [ ] 第二期:pdf.js 的 vendor 與雜湊紀錄,`utils/vendor/README.md` 補上

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Start by reading stripmeta.js for the existing dynamic pdf-lib loading pattern and utils/strip-metadata.md for the current PDF explanation. The first phase is docs/zh-TW/js/pdfkit.js and docs/zh-TW/utils/pdf.md, plus the three-language symlinks, nav/index card, offline_assets, and tools/test_pdfkit.mjs. Done means merge/split/extract/rotate work offline with pdf-lib and the tests confirm page operations and no upload or retention path.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript
Lĩnh vực
frontend, security, tooling
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.