將CSDN文章導出為PDF

作者:翟天保Steven
版權聲明:著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處

前言

? ? ? ?在日常學習和技術積累過程中,我們經常會在 CSDN 等技術博客平臺上閱讀高質量的技術文章。然而,網頁閱讀存在著廣告干擾、網絡依賴等問題,很多時候我們希望能將文章保存為 PDF 格式,方便離線閱讀和整理筆記。

? ? ? ?總結為如下四點:

  1. 廣告與干擾元素影響閱讀體驗:CSDN 等平臺的文章頁面通常包含大量側邊欄廣告、推薦內容和互動組件,這些元素會分散注意力,影響閱讀效率。

  2. 離線學習與知識管理需求:在沒有網絡的環境下(如通勤、出差),我們仍然希望能夠繼續學習之前收藏的文章。將文章導出為 PDF 可以方便地進行離線閱讀。

  3. 個性化排版與打印需求:網頁版文章的排版可能不適合打印或長時間閱讀,通過導出為 PDF,我們可以自定義頁面布局、字體大小等參數,優化閱讀體驗。

  4. 知識沉淀與筆記整理:將重要的技術文章保存為 PDF 后,可以更方便地添加標注、整理筆記,形成個人知識庫。

? ? ? ?本文將介紹一種通過 JavaScript 代碼一鍵導出 CSDN 文章為 PDF 的方法,幫助你輕松獲取無干擾的純凈閱讀體驗。

功能解析

? ? ? ?若要實現此功能,先拆解分析。我們需要從如下幾點思考:

  1. 內容提取與準備

    • 通過document.getElementsByClassName方法獲取文章標題和內容
    • 移除文章內容容器上的內聯樣式,避免原始樣式影響打印效果
    • 創建自定義的頁眉頁腳,添加導出時間和版權信息
  2. 臨時 DOM 修改

    • 保存原始頁面內容,以便后續恢復
    • 用提取的標題、內容和自定義的頁眉頁腳替換整個頁面內容
    • 添加打印專用樣式,優化 PDF 顯示效果
  3. PDF 生成與頁面恢復

    • 調用window.print()觸發瀏覽器的打印對話框
    • 用戶在對話框中選擇 "保存為 PDF" 選項
    • 打印完成后,將頁面內容恢復為原始狀態
  4. 錯誤處理

    • 使用try...catch塊捕獲可能的錯誤
    • 確保在發生錯誤時也能恢復原始頁面,避免頁面崩潰

代碼實現

? ? ? ?根據上述四點分析,來實現功能,完整代碼如下:

(function(){'use strict';try {// 保存原始頁面內容,以便后續恢復var originalContent = document.body.innerHTML;// 獲取文章標題和內容(根據CSDN頁面結構)var pageTitle = document.getElementsByClassName('article-title-box')[0].innerHTML;var mainContent = document.getElementsByClassName('article_content')[0].innerHTML;// 移除文章內容容器上的內聯樣式,確保內容完整顯示var contentBox = document.getElementsByClassName('article_content')[0];contentBox.removeAttribute("style");// 準備打印時的頁眉和頁腳內容var headerContent = '<div class="print-header" style="text-align:center; font-size:14px; color:#666;">' + '導出自CSDN - ' + new Date().toLocaleDateString() + '</div>';var footerContent = '<div class="print-footer" style="text-align:center; font-size:14px; color:#666;">' + '? ' + new Date().getFullYear() + ' 個人版權所有</div>';// 創建打印專用樣式,優化PDF顯示效果var style = document.createElement('style');style.innerHTML = `@media print {body { font-family: 'Microsoft YaHei', sans-serif; }.print-header { position: fixed; top: 0; width: 100%; }.print-footer { position: fixed; bottom: 0; width: 100%; }img { max-width: 100% !important; height: auto !important; } /* 確保圖片適應頁面 */pre { white-space: pre-wrap; word-wrap: break-word; } /* 代碼塊自動換行 */a { text-decoration: none; color: inherit; } /* 鏈接不顯示下劃線和顏色 */}`;document.head.appendChild(style);// 臨時替換頁面內容,只保留標題、文章主體和頁眉頁腳document.body.innerHTML = headerContent + pageTitle + mainContent + footerContent;// 調整頁面寬度和縮放比例,優化打印布局document.body.style.width = "100%";document.body.style.zoom = 0.8;// 調用瀏覽器的打印功能,用戶可以選擇保存為PDFwindow.print();// 打印完成后,恢復原始頁面內容document.body.innerHTML = originalContent;return false;} catch(e) {console.error('導出PDF出錯:', e);// 發生錯誤時確保頁面恢復document.body.innerHTML = originalContent;return false;}
})();

使用方法

  1. 打開你想要導出的 CSDN 文章頁面
  2. 按下 F12 打開瀏覽器開發者工具
  3. 切換到 Console 面板
  4. 復制上述代碼并粘貼到控制臺中
  5. 按下 Enter 執行代碼
  6. 在彈出的打印對話框中,選擇 "保存為 PDF" 選項
  7. 選擇保存位置和文件名,點擊 "保存"

? ? ? ?希望本文介紹的知識可以解決你的煩惱。?

? ? ? ?如果文章幫助到你了,可以點個贊讓我知道,我會很快樂~加油!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89281.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89281.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

macOS - Chrome 關閉自動更新

進入 Google 相關資源文件夾 刪除 GoogleSoftwareUpdate 文件夾 open ~/Library/Google 部分教程推薦&#xff0c;在 chrome://flags/ 頁面設置&#xff0c;但最近沒看到 自動更新相關開關。2025-07-13&#xff08;日&#xff09;

Python 模塊化編程全解析:模塊、包與第三方庫管理指南

模塊與包 模塊化編程是什么&#xff1f;用生活例子秒懂 想象你在搭樂高積木&#xff1a; 每個小積木塊都有特定功能&#xff08;比如輪子、窗戶、墻壁&#xff09;—— 這就像模塊&#xff08;一個.py 文件&#xff0c;封裝了函數或類&#xff09;。把相關的積木塊裝進一個盒…

小白學Python,網絡爬蟲篇(2)——selenium庫

前言 selenium 庫是一種用于 Web 應用程序測試的工具&#xff0c;它可以驅動瀏覽器執行特定操作&#xff0c;自動按照腳本代碼做出單擊、輸入、打開、驗證等操作&#xff0c;支持的瀏覽器包括 IE、Firefox、Safari、Chrome、Opera 等。 與 requests 庫不同的是&#xff0c;se…

Java安全:SpringBoot項目中Fastjson組件的使用與安全實踐

前言 Fastjson是阿里巴巴開源的一個高性能Java JSON庫&#xff0c;廣泛用于Java對象的序列化和反序列化操作。在SpringBoot項目中&#xff0c;Fastjson常被用作JSON處理工具。然而&#xff0c;Fastjson因其高性能而廣受歡迎的同時&#xff0c;也因多次爆出的安全漏洞而備受關注…

x的平方根

給你一個非負整數 x &#xff0c;計算并返回 x 的 算術平方根 。由于返回類型是整數&#xff0c;結果只保留 整數部分 &#xff0c;小數部分將被 舍去 。注意&#xff1a;不允許使用示例 1&#xff1a;輸入&#xff1a;x 4 輸出&#xff1a;2示例 2&#xff1a;輸入&#xff1…

oracle服務器定時備份Windows Server

-- 創建目錄對象&#xff08;若未創建&#xff09;&#xff0c;先建立對應文件夾才能用目錄對象CREATE OR REPLACE DIRECTORY dp_dirbackup AS D:\BACKUP; --配置路徑 GRANT READ, WRITE ON DIRECTORY dp_dirbackup TO 用戶名; --配置用戶權限-- 備份腳本&#xff08;保存為每…

HTML data-* 屬性 自定義屬性

data-* 屬性用于存儲私有頁面后應用的自定義數據。 data-* 屬性可以在所有的 HTML 元素中嵌入數據。 自定義的數據可以讓頁面擁有更好的交互體驗&#xff08;不需要使用 Ajax 或去服務端查詢數據&#xff09;。 data-* 屬性由以下兩部分組成&#xff1a;1. 屬性名不要包含大寫字…

Oracle 大頁配置use_large_pages 參數解析

一、前因 再給一位客戶的Exdata 2 節點 RAC 19C版本創建數據庫并配置好優化參數后&#xff0c;客戶一天發來一份健康檢查報告&#xff0c;打開一看 use_large_pages 配置異常。 回想安裝部署時特意確認了在db啟動大頁已經生效&#xff0c;為何會有此異常告警項&#xff1f; 二…

迅為八核高算力RK3576開發板攝像頭實時推理測試 ppyoloe目標檢測

RK3576處理器迅為iTOP-3576開發板采用瑞芯微RK3576高性能、低功耗的應用處理芯片&#xff0c;集成了4個Cortex-A72和4個Cortex-A53核心&#xff0c;以及獨立的NEON協處理器。它適用于ARM PC、邊緣計算、個人移動互聯網設備及其他多媒體產品。NPU高達6TOPS算力支持INT4/INT8/INT…

純CSS輪播

純CSS輪播 在現代網頁設計中&#xff0c;輪播組件是一種常見的用戶界面元素&#xff0c;廣泛應用于展示圖片、產品信息等內容。本文將詳細介紹如何使用純 HTML/CSS 和少量 JavaScript 實現一個功能完備的 CSS Scroll Snap 輪播組件。該組件不僅支持原生左右拖拽滾動&#xff0c…

從零開始的云計算生活——番外3,LVS+KeepAlived+Nginx高可用實現方案

目錄 前言 一、環境搭建 1.環境準備 2.安裝ipvsadm和keepalived&#xff08;Lvs服務器&#xff09;&#xff0c;nginx服務器安裝nginx 3.為兩臺RS配置虛擬ip&#xff08;nginx服務器&#xff09; 1.配置虛擬網絡子接口 2.ARP響應級別與通告行為的概念 3.配置ARP 二、Ke…

100201組件拆分_編輯器-react-仿低代碼平臺項目

文章目錄1 設計UI&#xff0c;組件拆分2 實現關于1 設計UI&#xff0c;組件拆分 編輯器整體如上圖所示&#xff0c;重點關注&#xff1a; flex彈性布局 上 左中右 下 左中右 畫布居中畫布Y軸滾動 2 實現 src/pages/question/Edit/index.tsx代碼如下&#xff1a; import { …

CS課程項目設計2:交互友好的五子棋游戲

上次給大家分享了井字棋游戲的設計流程 CS課程項目設計1&#xff1a;交互友好的井字棋游戲-CSDN博客https://blog.csdn.net/weixin_36431280/article/details/149309500?spm1001.2014.3001.5501今天打算再分享進階版井字棋游戲的版本設計——五子棋游戲。五子棋游戲操作方式與…

如何用山海鯨輕松構建3D智慧大屏?

一、什么是3D可視化大屏&#xff1f; 3D可視化大屏是一種結合了三維&#xff08;3D&#xff09;圖形技術與數據可視化技術的信息展示平臺&#xff0c;它通過在大型屏幕上以三維立體的形式呈現復雜的數據和信息&#xff0c;為用戶提供直觀、生動的視覺體驗。這種技術將抽象的數…

牛客網 SQL 刷題(全部題目,最優解,復雜題有講解)

刷題網址&#xff1a;https://www.nowcoder.com/exam/oj?questionJobId10&subTabNameonline_coding_page有時主頁顯示的題目序號與點進去之后的題目序號有所不同&#xff0c;這里以點進去之后的題目序號為主&#xff0c;如果日后還是有所出入&#xff0c;可以憑題目名稱找…

Linux 系統管理基礎教程

一、引言在 Linux 系統中&#xff0c;系統管理是一項至關重要的任務&#xff0c;它涉及到進程和服務的管理、系統運行級別的控制以及關機重啟等操作。本文將詳細介紹 Linux 系統管理的基礎知識&#xff0c;幫助讀者更好地理解和掌握 Linux 系統的管理技巧。二、Linux 中的進程和…

如何實戰應用快鯨aiseo提升百度搜索排名?

百度搜索排名優化策略 百度搜索排名的提升&#xff0c;是企業獲取在線可見性與自然流量的核心目標。有效的優化策略需基于對百度搜索算法原理的深入理解&#xff0c;遵循其重視內容質量與用戶體驗的核心準則。具體而言&#xff0c;這涉及構建完善的網站技術架構以確保高效爬取與…

element-plus——圖標推薦

以下是 Element Plus 中適合編輯頁面使用的圖標組件示例:<!-- 編輯相關 --> <el-icon><Edit /></el-icon> <!-- 基礎編輯圖標 --> <el-icon><EditPen /></el-icon> <!-- 鋼筆樣式編輯圖標 --&g…

黃仁勛鏈博會首秀:中國開源AI催化全球革命,機器人浪潮重塑未來工廠

7月16日&#xff0c;北京鏈博會開幕式迎來一位特殊演講者——英偉達創始人黃仁勛身著唐裝&#xff0c;首次以中文登臺演講。這位AI芯片巨頭的掌舵人坦言“很緊張”&#xff0c;卻清晰傳遞出一個重要觀點&#xff1a;中國的開源AI已成為世界進步的催化劑&#xff0c;讓每個國家、…

uniapp云托管前端網頁

uniCloud控制臺 實名認證