建(bentopdf-simple))
前端【免費下載鏈接】bentopdfThe Privacy First PDF Toolkit項目地址https://gitcode.com/gh_mirrors/be/bentopdf點擊查看免費下載Simple Mode 是 BentoPDFThe Privacy First PDF Toolkit為自托管Self-Hosted部署場景提供的一套構(gòu)建模式對應(yīng)bentopdf-simple鏡像。它并非功能裁剪的精簡版merge、split、edit、sign、OCR、Office 轉(zhuǎn)換等全部 PDF 工具在兩個構(gòu)建中行為完全一致唯一區(qū)別在于隱藏了只在 bentopdf.com 公網(wǎng)站點或商業(yè)公開部署中有意義的營銷型 UIHero、FAQ、Testimonials、Footer 等。讀完本文你將掌握 Simple Mode 的隱藏內(nèi)容清單、五種啟用方式、本地對比測試方法、生產(chǎn)部署形態(tài)Docker Compose、Podman Quadlet以及它在 Vite 構(gòu)建管線中的底層實現(xiàn)原理。什么是 Simple Mode功能相同僅隱藏營銷殼Simple Mode 的定位在 SIMPLE_MODE.md 中定義得非常清晰它是自托管構(gòu)建bentopdf-simple的動力來源與支撐 bentopdf.com 的 Commercial build功能上完全一致。兩者的唯一差異是圍繞工具周邊的營銷 UI而非工具本身。Simple Mode 不是lite版。每一個 PDF 工具——合并、拆分、編輯、簽名、OCR、Office 轉(zhuǎn)換以及其他所有工具——在兩個構(gòu)建中都完全相同地工作。唯一的區(qū)別是工具周圍的營銷 UI。在鏡像生態(tài)上項目維護兩個構(gòu)建構(gòu)建鏡像適用場景Self-Hosted buildSimple Modeghcr.io/alam00000/bentopdf-simple:latest推薦團隊/組織內(nèi)部工具、自托管私有部署Commercial buildghcr.io/alam00000/bentopdf:latestbentopdf.com 自身以及持有商業(yè)許可的公開面向用戶的 PDF 部署從源碼側(cè)看Simple Mode 不是一個獨立的代碼分支而是同一套代碼庫在構(gòu)建期通過SIMPLE_MODE環(huán)境變量切換的產(chǎn)物Vite 構(gòu)建配置vite.config.ts在define階段將__SIMPLE_MODE__編譯為布爾常量同時 Rollup 的入口文件也會在 Simple Mode 下從index.html切換為simple-index.html。這一點決定了后文構(gòu)建期生效、運行期不生效的關(guān)鍵特性。Simple Mode 隱藏了什么啟用后Simple Mode 會隱藏以下 bentopdf.com 專屬營銷 UI導(dǎo)航欄Navigation bar含營銷內(nèi)容的 Hero 區(qū)塊Features 區(qū)塊Security/compliance 區(qū)塊FAQ 區(qū)塊Testimonials 區(qū)塊Support 區(qū)塊Footer同時頁面標(biāo)題更新為PDF Tools工具區(qū)在頁面中變得更加突出。沒有任何 PDF 工具被移除或禁用。這套隱藏邏輯在源碼中有兩處實現(xiàn)首頁src/js/main.ts當(dāng)__SIMPLE_MODE__為真時hideBrandingSections()會逐個隱藏hero-section、features-section、security-compliance-section、faq-accordion、testimonials-section、support-section、GitHub 鏈接以及帶.hide-section的Used by companies區(qū)塊并把document.title設(shè)為品牌名 - PDF Tools同時重寫工具標(biāo)題與副標(biāo)題的樣式使其更加醒目。工具頁src/js/utils/simple-mode-footer.ts在__SIMPLE_MODE__下所有section中標(biāo)題包含 How It Works、Related PDF Tools、Related Tools、Frequently Asked Questions 的區(qū)塊都會被隱藏并在simple-mode-lang-switcher容器中注入語言切換器。此外src/js/main.ts 中 GitHub Star 計數(shù)器在__SIMPLE_MODE__下也被跳過!__SIMPLE_MODE__ !__DISABLE_GITHUB_STARS__才發(fā)起api.github.com請求這從代碼層面印證了 README 中Simple Mode 構(gòu)建總是跳過 Star 計數(shù)器的說明。五種啟用方式方法一直接使用預(yù)構(gòu)建的 Simple Mode 鏡像推薦GitHub Container Registry推薦# Docker docker run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest # Podman podman run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latestDocker Hub# Docker docker run -p 3000:8080 bentopdfteam/bentopdf-simple:latest # Podman podman run -p 3000:8080 docker.io/bentopdfteam/bentopdf-simple:latest或使用 Docker Compose / Podman Composeservices: bentopdf: # 使用 GitHub Container Registry推薦 image: ghcr.io/alam00000/bentopdf-simple:latest # 或使用 Docker Hub # image: bentopdfteam/bentopdf-simple:latest container_name: bentopdf restart: unless-stopped ports: - 3000:8080倉庫根目錄的 docker-compose.yml 默認(rèn)鏡像正是ghcr.io/alam00000/bentopdf-simple:latest即開箱即用的自托管形態(tài)。方法二Docker Compose 本地構(gòu)建docker compose -f docker-compose.dev.yml build --build-arg SIMPLE_MODEtrue docker compose -f docker-compose.dev.yml up -ddocker-compose.dev.yml 中已預(yù)留了SIMPLE_MODE構(gòu)建參數(shù)注釋說明false為默認(rèn)模式、true為 Simple Mode直接通過--build-arg覆蓋即可。方法三Docker Build 直接構(gòu)建docker build --build-arg SIMPLE_MODEtrue -t bentopdf-simple . docker run -p 3000:8080 bentopdf-simpleDockerfile 與 Dockerfile.nonroot 均聲明了ARG SIMPLE_MODEfalse并ENV SIMPLE_MODE$SIMPLE_MODE構(gòu)建階段會在該環(huán)境變量下執(zhí)行npm run build:with-docs。Dockerfile.nonroot額外支持 LSIO 風(fēng)格的PUID/PGID環(huán)境變量用于以非 root 身份運行。方法四npm 腳本本地開發(fā)最省事npm run serve:simple該命令在 package.json 中定義為serve:simple: SIMPLE_MODEtrue npm run build npm run preview -- --port 3000它會自動完成設(shè)置SIMPLE_MODEtrue以 Simple Mode 構(gòu)建整個項目在http://localhost:3000上提供構(gòu)建產(chǎn)物方法五環(huán)境變量 手動構(gòu)建export SIMPLE_MODEtrue npm run build npx serve dist -p 3000注意npm run build本身是一條很長的流水線package.json先生成博客與靜態(tài)工具鏈接再tsc類型檢查、vite build、SEO 頁面增強最后依次執(zhí)行 i18n 頁面生成、sitemap、安全響應(yīng)頭與 SEO 審計腳本。其中安全響應(yīng)頭生成scripts/generate-security-headers.mjs和打包腳本scripts/package-dist.js都會讀取SIMPLE_MODE來決定產(chǎn)物的行為因此該環(huán)境變量必須在整個構(gòu)建流程啟動前設(shè)置。本地測試 Simple Mode方法一npm 腳本開發(fā)最省事npm run serve:simple自動構(gòu)建并在http://localhost:3000上提供 Simple Mode 頁面。方法二預(yù)構(gòu)建鏡像生產(chǎn)驗證最省事# Docker - 拉取并運行 Simple Mode 鏡像 docker pull ghcr.io/alam00000/bentopdf-simple:latest docker run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest # Podman podman pull ghcr.io/alam00000/bentopdf-simple:latest podman run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest瀏覽器打開http://localhost:3000即可。方法三本地構(gòu)建并測試# 以 Simple Mode 構(gòu)建 SIMPLE_MODEtrue npm run build # 提供構(gòu)建產(chǎn)物 npx serve dist -p 3000瀏覽器打開http://localhost:3000。方法四兩個構(gòu)建并排對比# Commercial buildbentopdf.com 的外觀 docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest # Self-Hosted buildSimple Mode docker run -p 3001:8080 ghcr.io/alam00000/bentopdf-simple:latest # Podman 用戶將 docker 替換為 podmanCommercial buildhttp://localhost:3000Self-Hosted buildhttp://localhost:3001驗證清單如何確認(rèn) Simple Mode 生效當(dāng) Simple Mode 正常工作時你應(yīng)該看到? 干凈的 PDF Tools 頭部無營銷 Hero 區(qū)塊? Select a tool to get started 副標(biāo)題? 工具搜索欄? 按分類組織的全部 PDF 工具卡片? 無導(dǎo)航欄? 無 The PDF Toolkit built for privacy 的 Hero 區(qū)塊? 無 Features、FAQ、Testimonials 或 Footer 區(qū)塊PDF Tools 與 Select a tool to get started 這兩個文案來自 i18n 的simpleMode.title與simpleMode.subtitle見 public/locales/en/common.json且隨data-i18n屬性在運行時隨語言切換也就是說 Simple Mode 的頭部文案同樣支持多語言??捎萌萜麋R像一覽Self-Hosted buildSimple Mode—— 自托管推薦GitHub Container Registry推薦ghcr.io/alam00000/bentopdf-simple:latestghcr.io/alam00000/bentopdf-simple:v1.0.0帶版本號Docker Hubbentopdfteam/bentopdf-simple:latestbentopdfteam/bentopdf-simple:v1.0.0帶版本號Commercial build —— bentopdf.com 與商業(yè)許可持有者使用包含完整的營銷站點Hero/FAQ/Testimonials/Footer。只有當(dāng)你明確想要 bentopdf.com 的外觀時才拉取該鏡像——例如你在商業(yè)許可下運行一個公開面向用戶的 PDF 部署。GitHub Container Registry推薦ghcr.io/alam00000/bentopdf:latestghcr.io/alam00000/bentopdf:v1.0.0帶版本號Docker Hubbentopdfteam/bentopdf:latestbentopdfteam/bentopdf:v1.0.0帶版本號生產(chǎn)部署示例Docker Compose / Podman Composeservices: bentopdf: image: ghcr.io/alam00000/bentopdf-simple:latest # 推薦 # image: bentopdfteam/bentopdf-simple:latest # 備選Docker Hub container_name: bentopdf restart: unless-stopped ports: - 80:8080 environment: - PUID1000 - PGID1000PUID/PGID環(huán)境變量由 Dockerfile.nonroot 支持LSIO 風(fēng)格通過 entrypoint.sh 在啟動時以指定 UID/GID 運行 nginx。Podman QuadletLinux Systemd創(chuàng)建~/.config/containers/systemd/bentopdf-simple.container[Unit] DescriptionBentoPDF Simple Mode Afternetwork-online.target [Container] Imageghcr.io/alam00000/bentopdf-simple:latest ContainerNamebentopdf-simple PublishPort80:8080 AutoUpdateregistry [Service] Restartalways [Install] WantedBydefault.target啟用并啟動systemctl --user daemon-reload systemctl --user enable --now bentopdf-simpleAutoUpdateregistry讓 Quadlet 可以跟隨 registry 的鏡像標(biāo)簽自動更新適合長期無人值守的自托管節(jié)點。底層原理SIMPLE_MODE 如何參與構(gòu)建Simple Mode 的實現(xiàn)完全發(fā)生在構(gòu)建期理解這一點對排查為什么環(huán)境變量沒生效至關(guān)重要。相關(guān)證據(jù)集中在 vite.config.ts入口切換build.rollupOptions.input.main在SIMPLE_MODE true時指向 simple-index.html否則指向index.html。也就是說 Simple Mode 下首頁是專用的精簡入口模板而不是事后用 CSS/JS 擦除內(nèi)容。編譯期常量define.__SIMPLE_MODE__被編譯為JSON.stringify(process.env.SIMPLE_MODE true)因此源碼中的if (__SIMPLE_MODE__)分支會在打包時被 Tree-shaking/死代碼消除處理。這正是文檔Simple Mode 使用死代碼消除以獲得更小的 bundle這一說法的依據(jù)。產(chǎn)物覆蓋flattenPagesPlugin在SIMPLE_MODE true且存在simple-index.htmlbundle 時將產(chǎn)物中的simple-index.html重命名為index.html從而保證部署后訪問根路徑即是精簡首頁。運行時兜底src/js/main.ts 中的hideBrandingSections()作為運行時第二道保險隱藏仍在 DOM 中的各營銷區(qū)塊src/js/utils/simple-mode-footer.ts 則負(fù)責(zé)工具頁上的 How It Works、Related PDF Tools、FAQ 等區(qū)塊清理與語言切換器注入。自定義入口模板的結(jié)構(gòu)simple-index.html 展示了精簡首頁的完整結(jié)構(gòu)一個極簡的深色導(dǎo)航條僅品牌 Logo 與名稱可通過VITE_BRAND_NAME/VITE_BRAND_LOGO定制、居中的 PDF Tools 標(biāo)題、帶鍵盤快捷鍵提示CtrlK/?K的搜索框、按分類渲染的工具卡片網(wǎng)格#tool-grid以及處理中/告警/預(yù)覽/設(shè)置等模態(tài)框。它復(fù)用了 src/partials/settings-modal.html 與 src/partials/warning-modal.html 兩個 Handlebars 局部模板說明 Simple Mode 并不是一套獨立的簡化工具集而是與主構(gòu)建共享全部工具實現(xiàn)與模態(tài)組件。與 BASE_URL / 品牌定制的組合Simple Mode 可以與其他構(gòu)建期選項疊加使用。例如 README 中給出了同時設(shè)置BASE_URL與SIMPLE_MODE的示例docker build \ --build-arg SIMPLE_MODEtrue \ --build-arg BASE_URL/pdf/ \ -t bentopdf-simple . docker run -p 3000:8080 bentopdf-simple品牌化VITE_BRAND_NAME、VITE_BRAND_LOGO、VITE_FOOTER_TEXT在完整模式與 Simple Mode 下均可用simple-index.html 中的導(dǎo)航條與頁腳模板都通過 Handlebars 條件渲染讀取這些變量語言環(huán)境變量VITE_DEFAULT_LANGUAGE與DISABLE_GITHUB_STARS也可與 Simple Mode 組合。此外DISABLE_TOOLS構(gòu)建參數(shù)以逗號分隔的工具 ID 列表在兩種模式下都可用于禁用指定工具——Simple Mode 只隱藏營銷 UI工具層面的啟用/禁用仍由部署者通過構(gòu)建參數(shù)獨立控制。重要注意事項預(yù)構(gòu)建鏡像Simple Mode 請使用ghcr.io/alam00000/bentopdf-simple:latest推薦環(huán)境變量生效時機SIMPLE_MODEtrue只在構(gòu)建時生效運行時不生效。如果你docker run時設(shè)置-e SIMPLE_MODEtrue頁面不會有任何變化——因為該值在鏡像構(gòu)建階段已被編譯進產(chǎn)物__SIMPLE_MODE__常量與入口選擇都已固定。需要修改該配置時請重新構(gòu)建鏡像或換用預(yù)構(gòu)建的bentopdf-simple鏡像。構(gòu)建期優(yōu)化Simple Mode 通過死代碼消除獲得更小的 bundle功能一致性所有 PDF 工具在兩種模式下工作方式完全相同延伸閱讀自托管部署總覽與更多鏡像選擇docs/self-hosting/index.md、docs/self-hosting/docker.md靜態(tài)托管無需容器方式STATIC-HOSTING.md品牌定制與構(gòu)建參數(shù)完整表格README.md--simple-mode參數(shù)默認(rèn) off可與BASE_URL、VITE_DEFAULT_LANGUAGE等組合源碼級實現(xiàn)vite.config.ts、src/js/main.ts、src/js/utils/simple-mode-footer.ts贊分享前端【免費下載鏈接】bentopdfThe Privacy First PDF Toolkit項目地址https://gitcode.com/gh_mirrors/be/bentopdf點擊查看免費下載相關(guān)推薦BentoPDF自托管完整指南在Docker、Vercel和Netlify上部署完整教程BentoPDF自托管完整指南在Docker、Vercel和Netlify上部署完整教程 BentoPDF是一個隱私優(yōu)先的PDF工具包提供超過50種PDF處前端BentoPDF 靜態(tài)托管實戰(zhàn)指南基于 Netlify、Vercel 與 GitHub Pages 的自托管部署與 SEO 控制BentoPDF 靜態(tài)托管實戰(zhàn)指南基于 Netlify、Vercel 與 GitHub Pages 的自托管部署與 SEO 控制 BentoPDF 是一款「隱前端如何快速搭建Sentry自托管系統(tǒng)面向開發(fā)者的完整部署指南如何快速搭建Sentry自托管系統(tǒng)面向開發(fā)者的完整部署指南 在當(dāng)今軟件開發(fā)中錯誤監(jiān)控和性能追蹤已成為確保應(yīng)用穩(wěn)定性的關(guān)鍵環(huán)節(jié)。Sentry自托管系統(tǒng)提供了一運維云原生可觀測性創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考