将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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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控制台 实名认证