anoni-net / anoni-net/docs

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

オープン
#513 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement
主要言語
JavaScript
スター
47
フォーク
7
平均マージ
2時間 42分
マージ済み PR(30日)
291

説明

需求依據見 #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` 補上

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript
領域
frontend, security, tooling
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
活発
明瞭さ
明確に書かれている
初心者へのやさしさ
55/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。