工作中遇到一个问题,将一篇微信公众号文章(可以使用浏览器打开,文章链接:https://mp.weixin.qq.com/s/M9Oz3UDaEXJoLMzSB4mJPQ)转换为PDF格式。这篇文章有较多的图片,页数也比较多,转换中遇到一些问题,在这里记录下来。

方法一:巧用Chrome浏览器打印功能

微信公众号在网页打开,相当于html文件,可以打印整个网页。Ctrl+P打开打印页面,选择另存为PDF,设置去掉页眉页脚,则可以保存为PDF文档。

但是注意到一个问题,因为本文较长,Ctrl+P打开是发现后面大部分页面是空白的,下载PDF也只有前面几页内容,要在原网页从头缓慢拉到底部进行一个缓存,再进到打印页面,发现可以下载整个PDF。

方法二:使用Python程序将公众号文章转换为html文件或PDF文档

# coding: utf-8
import pdfkit
import os
import requests
from bs4 import BeautifulSoup# 模板html,微信抓取到的html内容过多.
T_HTML = """
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="referrer" content="never"><meta name="referrer" content="no-referrer"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>{style}</style>
</head>
<body>{content}
</body>
</html>"""# pdf的一些参数
PDF_OPTIONS = {'page-size': 'A4','encoding': "UTF-8",
}def getHtmlContent(url, proxies=None):'''获取html'''if proxies is None:proxies = {"http": None, "https": None}res = requests.get(url, proxies)res.encoding = 'utf-8'return res.textdef reHtmlTags(cnt_html):'''替换图片src、元素、删除元素'''# 替换图片标签属性cnt_html = cnt_html.replace("data-src", "src").replace('style="visibility: hidden;"', "")soup = BeautifulSoup(cnt_html, 'html.parser')# 删除评论和投票的html标签if soup.iframe:soup.iframe.decompose()# 用模板格式化comments = soup.findAll("img", {"class": "rich_pages wxw-img"})  #BeautifulSoup找到文章图片节点,不通文章节点可能不同styles = soup.find_all('style')content = soup.find('div', id='page-content')  #正文文本节点,不同文章可能不同fmt_html = T_HTML.format(style=styles[0].string, content=content)html = fmt_html.replace(comments[0].attrs['src'], '')return htmldef outFile(data, out_type):'''导出'''if out_type == 'pdf':pdfkit.from_string(data, '大米评测_文章.pdf', PDF_OPTIONS)
#         path = os.getcwd() + '\\大米评测_文章.pdf'
#         with open(path, 'w', encoding='utf-8') as f:
#             f.write(data)else:path = os.getcwd() + '\\大米评测_文章.html'with open(path, 'w', encoding='utf-8') as f:f.write(data)source = getHtmlContent('https://mp.weixin.qq.com/s/M9Oz3UDaEXJoLMzSB4mJPQ') #改变文章链接
html = reHtmlTags(source)
#outFile(html, 'html')
outFile(html, 'pdf')

记录发现的比较好用的在线PDF压缩的地址:

  • https://pdftoword.55.la/compress-pdf/
  • https://docsmall.com/pdf-compress 不失侦压缩***

html文件转换为PDF文档相关推荐

  1. 如何快速将PDF文件转换为Word文档

    PDF文件是一个广泛使用的电子文档格式,其被广泛应用于各种领域,包括教育.商业和政府.虽然PDF文件非常实用,但有时你需要将其转换为Word文档,以便更方便地编辑和处理.以下是几种快速将PDF文件转换 ...

  2. 批量将JPG转换为PDF文档的方法,看完这篇你就知道了

    PDF格式因为稳定性和兼容性,被广泛应用在文件传输分享以及存储中.那如果同时有大量文件需要转换为PDF文档,传统方法是一个个将它转换为PDF文档,不仅浪费我们宝贵的时间精力而且容易出错. 那么有没有什 ...

  3. 关于python:如何将Word文档批量转换为PDF文档

    Q:         我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了.但是WPS需要收 ...

  4. 将PDF文件转换为Word文档和其他格式

    Most of us know easy ways to turn a Word or other text document into a PDF, but what if we need to c ...

  5. 如何把图片转换为PDF文档

    今天无意中看到有一个同事的空间,有一篇<如何把图片转为PDF文档>的日志,按照教程所写,于是下载了一个迅捷JPG转换成PDF转换器,笔者使用成功,特与大家分享. 应用背景: 把书本纸上有用 ...

  6. Python 技术篇-利用pdfkit库实现html格式文件转换PDF文档实例演示

    准备: 首先需要安装 pdfkit 库,使用 pip install pdfkit 命令就好了. 还需要安装 wkhtmltopdf 工具,本质就是利用这个工具来进行转换,pdfkit 库就是作为接口 ...

  7. 将PPT文件转换为Word文档

    参考:http://tech.163.com/07/0809/10/3LES8KBL000915AA.html 这里做总结,并留作备份. Word 转换为PPT,也许你很容易做到,但是反之把PPT转换 ...

  8. Word处理控件Aspose.Words功能演示:在 Java 中将 HTML 文件转换为 Word 文档

    在各种情况下,您可能需要将 HTML 内容转换为 Word 文档.例如,用于从所见即所得 HTML 编辑器生成文档或将网页转换为 DOCX 或 DOC 格式.为了以编程方式执行此转换,本文介绍了如何将 ...

  9. 怎样将PPT文件转换为Word文档精美ppt模板下载

    Word 转换为PPT,可能你很轻率做到,然而反之把PPT转换为Word你懂得吗?我之前始终用一个很笨的措施,即便把里面的文字一段一段粘出来.文字少了还好说,要是文字多了,那个工作量就显而易见了... ...

最新文章

  1. Visual Studio Code 配置 Markdown
  2. 记一次windows的安装
  3. Linux 内核阅读工具vim+ctags+cscope+taglist
  4. python37安装opencv41_Vs2019+opencv4.1.0+python3.7,包安装,vs2019opencv410python37,程序包
  5. mysql对数据库的操作_MySQL数据库对数据库的操作
  6. 结构专业规范大全_1.2万篇 建筑行业规范大全套!速来!
  7. 阿里一年,聊聊我成长了什么,入职阿里的职业生涯感悟
  8. C++ Deque(双向队列
  9. c 如何操作php,thinkphp的c方法使用示例
  10. JDBC 笔记4 PreparedStatement 与Statement 的区别
  11. 记事本之修改非txt文档
  12. Centos7:dubbo监控中心安装,配置和使用
  13. 两步集成TV移动框架,从未如此简单
  14. php 正则 修饰符,php 正则修饰符
  15. 如何登录新浪微博html5,新浪微博怎么登陆
  16. 计算机应用基础素材,计算机应用基础(Windows XP+Office 2003)、素材和习题答案-王向慧 计算机应用基础...
  17. 华为手机忘了密码,怎样强制刷机呢?
  18. 跟我学LabVIEW:什么是全局变量?如何创建及使用全局变量?
  19. 手机怎么把视频压缩到最小
  20. linux内核编程,实现内核之间的调用

热门文章

  1. java添加主函数,java方法,java主函数调用方法
  2. javascript中的Reflect对象是什么?如何使用Reflect?
  3. Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pyp
  4. 实现一个简单的文字云
  5. ViewPager基本用法
  6. zz迅雷7无法自动登录解决办法
  7. 我的python学习之路_我的Python入门之路
  8. WSL2迁移系统盘的docker-desktop和docker-desktop-data到其他盘
  9. 赛马网基本算法之--翻转数组
  10. 数字电路-逻辑代数基础