Skip to content

Repository files navigation

Seer PDF

English | 简体中文

Seer PDF is a local-first Chrome extension for turning web pages, articles, problem sets, selected nodes, and local HTML files into clean PDF documents.

It is designed around one simple boundary: PDF generation happens in your own browser. Seer PDF does not upload page content, does not use a remote PDF conversion service, and does not add accounts, subscriptions, online editing, or telemetry.

Features

  • Current page printing: export the active tab as a text-based PDF.
  • Selected node printing: pick a content block on the page and print only that node.
  • Region capture printing: drag to select a visual region and export it as a PDF.
  • Batch link printing: collect links from the current page, select the ones you need, and print them in sequence.
  • Local history and preview: keep local PDF records, preview, download, delete, and regenerate with updated layout settings.
  • Typography controls: adjust local fonts, font size, line height, paragraph spacing, text indent, content width, and page numbers.
  • Local HTML printing: import .html or .htm files and print them as offline pages.

Site Templates

Seer PDF includes a small set of site templates for pages that need extra cleanup before printing.

Zhihu

  • Supports answers, questions, column articles, pins, collections, people and organization pages, and column home pages.
  • Exports the current item or displayed items as PDF or Markdown, with an optional standalone comments switch.
  • Batch exports run through the links-page workspace and can write separate article, comment, image, and progress files, with ZIP fallback where directory access is unavailable.
  • Preserves readable text, images, formulas, link cards, and nested comments while removing page-tool noise.

Zujuan

  • Supports three modes: stem only, stem + answer card, and stem + full analysis.
  • The answer card is generated locally by the extension template.
  • Full analysis uses only content already authorized and available to the current page or account. It does not bypass login, membership, rate limits, takedowns, or WAF restrictions.
  • Thematic pages print the current section by default. Loading external sections requires explicit opt-in in the page panel and is protected by limits, throttling, jitter, and cooldown.
  • The "print explanation sections" option can include thematic explanation blocks in all three Zujuan modes, including answer-card mode.

Installation

  1. Download or clone this repository.
  2. Open chrome://extensions in Chrome or Edge.
  3. Enable Developer mode.
  4. Click "Load unpacked".
  5. Select the repository root directory.

After loading the extension, click the toolbar icon to start printing.

Usage

Print the Current Page

Open any web page, click the extension icon, and choose current page printing.

Print Part of a Page

Choose selected-node printing or region printing from the popup, then select the content on the page.

Use Site Templates

Open the extension popup on a supported site. If the page is recognized, template actions will appear in the popup.

Zhihu and Zujuan pages may also show in-page shortcut panels or buttons. These tools are marked as print noise and are removed from generated PDFs.

Adjust Layout

Generated PDFs open in the preview page. You can adjust typography, spacing, width, and page-number settings, then save a new copy or replace the current one.

Local and Privacy Boundaries

  • The main PDF path runs inside your local browser.
  • Seer PDF does not upload page content.
  • Seer PDF does not call online PDF conversion, compression, editing, telemetry, or remote template services.
  • Extension-page scripts, images, fonts, media, and frames stay local or use blob: / data: URLs; connect-src has only the controlled Zhihu/zhimg asset-hydration exception.
  • Ordinary page resources such as images, scripts, fonts, or analytics are still controlled by the page itself; Seer PDF does not proxy or unblock them.
  • For high-risk sites such as Zujuan, Seer PDF avoids silent background navigation to real site URLs by default. If a site WAF blocks your IP or session, the extension cannot remove that block.

Permissions

Seer PDF is a Chrome Manifest V3 extension. Main permission usage:

  • activeTab / scripting: prepare pages for printing, node selection, and site templates.
  • debugger: call Chrome Page.printToPDF for text-based PDF generation.
  • downloads: download generated PDFs.
  • offscreen: create a short-lived local Blob URL for a stored PDF without opening a visible tab or uploading data.
  • storage: store local settings, history, and temporary print data.
  • tabs: open preview, history, settings, batch-link, and local-print pages.
  • fontSettings: read available local fonts.
  • contextMenus: provide the local right-click entry point.

Project Structure

background.js              Chrome extension service worker for printing, storage, downloads, and message routing
content.js                 Shared content script for selection tools, overlays, link collection, and page-tool entry points
pages/                     Popup, preview, history, settings, batch links, local HTML source pages
shared/                    Shared pure functions and lightweight UI helpers
page-tools/                In-page shortcut tools for Zhihu and Zujuan
site-templates/            Site-specific templates for Zhihu, Zujuan, and related smoke tests
tests/                     Smoke tests and extension-level regression tests
docs/                      Architecture, API, database, progress, rules, and changelog documents

Development and Verification

Common static checks:

Get-Content .\manifest.json -Raw | ConvertFrom-Json | Out-Null
Get-ChildItem .\background.js, .\content.js, .\page-tools, .\pages, .\shared, .\site-templates, .\tests -Recurse -Filter *.js | ForEach-Object { node --check $_.FullName }
node .\site-templates\site-templates-smoke.test.js
node .\tests\print-style-css-smoke.test.js
node .\tests\font-ui-smoke.test.js
node .\tests\zhihu-page-tools-smoke.test.js
node .\tests\zujuan-page-tools-smoke.test.js
node .\tests\zujuan-popup-controls-smoke.test.js

Browser runtime tests require Playwright/Chromium:

$env:NODE_PATH='<node-module-paths>'
$env:SEER_CHROME_PATH='<chromium-exe>'
node .\site-templates\zujuan-paper-runtime-smoke.test.js
node .\tests\zujuan-page-tools-runtime-smoke.test.js
node .\tests\zujuan-extension-e2e-smoke.test.js

More commands are documented in AGENTS.md and docs/DEVELOPMENT.md.

Documentation

  • docs/ARCHITECTURE.md: architecture and key flows.
  • docs/API.md: internal extension message contracts.
  • docs/DATABASE.md: local settings, IndexedDB, and history metadata.
  • docs/CHANGELOG.md: notable changes.
  • docs/PROGRESS.md: current phase and recent progress.
  • docs/DOC_INDEX.md: documentation index.

License

MIT License. See LICENSE.

Security reporting: SECURITY.md. Contribution notes: CONTRIBUTING.md.

About

Local-first Chrome webpage-to-PDF extension. 本地优先的 Chrome 网页转 PDF 工具。

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages