DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
Translation pending
Compress and combine PDF files right in your browser. Free, fast, and private: your files are never uploaded.
ProductivityJavaScript · HTMLGitHub @den-run-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
pdfmini - compress any pdf in a client side simple web app
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Compress and combine PDFs in your browser. Files are processed on your device and never uploaded.
Use it: https://den-run-ai.github.io/pdfmini/
| Level | Images resampled to | JPEG quality | Good for |
|---|---|---|---|
| Light | 200 dpi | 82 | Printing, zooming in, archiving |
| Balanced | 144 dpi | 72 | Email, sharing, reading on any screen |
| Strong | 110 dpi | 55 | Upload limits, the smallest file that stays readable |
Images are only resampled when they are more than 15% sharper than the target for the size they are drawn at, and JPEGs that are already at or below the target quality are left alone, so repeated compression does not keep degrading a file. Lossless images such as charts and screenshots are re-encoded losslessly unless JPEG is dramatically smaller.
See Calibration for how these values were chosen.
Everything runs locally in the page. The only network requests are for the open-source libraries (pdf-lib, and PDF.js when needed) from the jsDelivr CDN, pinned to exact versions and checked with Subresource Integrity. A Content-Security-Policy enforces this: the page may only run its own code and those two pinned packages, and may only fetch from the pinned PDF.js package, so a document cannot be sent anywhere. Your settings are remembered in your browser's local storage.
Current versions of Chrome, Edge, Firefox and Safari on desktop, iOS and Android. Every change is tested in Chromium, Firefox and WebKit, plus emulated Android and iPhone, in CI.
It is a static site with no build step: index.html, js/app.js (UI),
js/engine.js (PDF processing) and js/jpeg.js (JPEG encoder).
npm install
npm run serve # http://localhost:8080
npx playwright install # once, to get Chromium, Firefox and WebKit
npm test # all browsers + mobile emulation
npm run test:chromium # unit tests + Chromium (desktop and mobile)
Tests serve the CDN libraries from node_modules, so they run offline
against the exact versions the app uses. UI tests fail on any
Content-Security-Policy violation.
The site is published to GitHub Pages by GitHub Actions
(.github/workflows/ci.yml): every pull request runs the full test suite,
and each push to main that passes it deploys an artifact containing only
the files the site serves (index.html, js/, LICENSE). The
repository's Pages source must be set to GitHub Actions
(Settings → Pages → Build and deployment). Dependabot keeps the workflow's
actions and Playwright up to date.
The libraries are pinned in package.json (for tests), in the CDN URLs
and SRI hashes in index.html and js/engine.js, and in the
Content-Security-Policy in index.html. After changing the version in
package.json and running npm install, node tools/sri.mjs prints the
new URLs and hashes; a unit test fails until all of them match.
The levels were calibrated on a corpus of real and synthetic documents (phone scans, photo albums, reports with photos and charts, slides, screenshots, CMYK print files, text-only papers, forms, a JPEG 2000/JBIG2 book scan) by measuring output size and visual similarity (SSIM of pages rendered by poppler, an independent renderer, at 110 and 200 dpi), next to Ghostscript's presets, and by inspecting zoomed-in text and photo crops.
Results on the eight image-heavy files (100 MB in total):
| Size of original | SSIM @110 dpi | SSIM @200 dpi | |
|---|---|---|---|
| pdfmini Strong (110 dpi, q55) | 3.0% | 0.932 | 0.878 |
| pdfmini Balanced (144 dpi, q72) | 6.0% | 0.941 | 0.913 |
| pdfmini Light (200 dpi, q82) | 13.8% | 0.965 | 0.948 |
Ghostscript /screen | 5.7% | 0.869 | 0.855 |
Ghostscript /ebook | 19.8% | 0.883 | 0.918 |
Ghostscript /printer | 68.5% | 0.936 | 0.959 |
Higher SSIM is closer to the original (1.0 is identical). Each level is about half the size of the one above it; going from 144 dpi/q72 to 150 dpi/q75 added 16% in size for no visible difference, and below 110 dpi small scanned text starts to blur. Text-only documents gain 0-37% from the lossless steps alone (fonts are left untouched); files that are already tightly packed are returned unchanged.
Forms gain the most from the lossless steps, with pages that render pixel-identically in poppler and PDF.js: fillable IRS forms (W-2, W-9, 1099, 1040 and schedules) shrink 41-75% once the static XFA copy is removed, and a 32-page return made of filled and flattened IRS forms shrinks 57%, mostly by drawing its 1,716 field graphics inline.
To repeat the measurements:
node tools/run-engine.mjs --level balanced --out out/ my.pdf # run the engine
python tools/quality.py my.pdf out/my.pdf # SSIM, text and qpdf checks
python tools/calibrate.py --out cal/ --dpi-eval 110,200 \
--settings "110:55,144:72,200:82" --gs screen,ebook,printer corpus/*.pdf
run-engine.mjs --cpu-throttle 4 approximates a mid-range phone,
tools/make-form-return.mjs builds the flattened IRS-form return,
tools/profile-engine.mjs prints a CPU profile, and
tools/screenshots.mjs captures the UI on mobile and desktop in light and
dark mode.
The Python tools need poppler-utils, numpy, pillow, scikit-image and pikepdf (and Ghostscript for the reference presets).
MIT