html文件转换为PDF文档
工作中遇到一个问题,将一篇微信公众号文章(可以使用浏览器打开,文章链接: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文档相关推荐
- 如何快速将PDF文件转换为Word文档
PDF文件是一个广泛使用的电子文档格式,其被广泛应用于各种领域,包括教育.商业和政府.虽然PDF文件非常实用,但有时你需要将其转换为Word文档,以便更方便地编辑和处理.以下是几种快速将PDF文件转换 ...
- 批量将JPG转换为PDF文档的方法,看完这篇你就知道了
PDF格式因为稳定性和兼容性,被广泛应用在文件传输分享以及存储中.那如果同时有大量文件需要转换为PDF文档,传统方法是一个个将它转换为PDF文档,不仅浪费我们宝贵的时间精力而且容易出错. 那么有没有什 ...
- 关于python:如何将Word文档批量转换为PDF文档
Q: 我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了.但是WPS需要收 ...
- 将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 ...
- 如何把图片转换为PDF文档
今天无意中看到有一个同事的空间,有一篇<如何把图片转为PDF文档>的日志,按照教程所写,于是下载了一个迅捷JPG转换成PDF转换器,笔者使用成功,特与大家分享. 应用背景: 把书本纸上有用 ...
- Python 技术篇-利用pdfkit库实现html格式文件转换PDF文档实例演示
准备: 首先需要安装 pdfkit 库,使用 pip install pdfkit 命令就好了. 还需要安装 wkhtmltopdf 工具,本质就是利用这个工具来进行转换,pdfkit 库就是作为接口 ...
- 将PPT文件转换为Word文档
参考:http://tech.163.com/07/0809/10/3LES8KBL000915AA.html 这里做总结,并留作备份. Word 转换为PPT,也许你很容易做到,但是反之把PPT转换 ...
- Word处理控件Aspose.Words功能演示:在 Java 中将 HTML 文件转换为 Word 文档
在各种情况下,您可能需要将 HTML 内容转换为 Word 文档.例如,用于从所见即所得 HTML 编辑器生成文档或将网页转换为 DOCX 或 DOC 格式.为了以编程方式执行此转换,本文介绍了如何将 ...
- 怎样将PPT文件转换为Word文档精美ppt模板下载
Word 转换为PPT,可能你很轻率做到,然而反之把PPT转换为Word你懂得吗?我之前始终用一个很笨的措施,即便把里面的文字一段一段粘出来.文字少了还好说,要是文字多了,那个工作量就显而易见了... ...
最新文章
- Visual Studio Code 配置 Markdown
- 记一次windows的安装
- Linux 内核阅读工具vim+ctags+cscope+taglist
- python37安装opencv41_Vs2019+opencv4.1.0+python3.7,包安装,vs2019opencv410python37,程序包
- mysql对数据库的操作_MySQL数据库对数据库的操作
- 结构专业规范大全_1.2万篇 建筑行业规范大全套!速来!
- 阿里一年,聊聊我成长了什么,入职阿里的职业生涯感悟
- C++ Deque(双向队列
- c 如何操作php,thinkphp的c方法使用示例
- JDBC 笔记4 PreparedStatement 与Statement 的区别
- 记事本之修改非txt文档
- Centos7:dubbo监控中心安装,配置和使用
- 两步集成TV移动框架,从未如此简单
- php 正则 修饰符,php 正则修饰符
- 如何登录新浪微博html5,新浪微博怎么登陆
- 计算机应用基础素材,计算机应用基础(Windows XP+Office 2003)、素材和习题答案-王向慧 计算机应用基础...
- 华为手机忘了密码,怎样强制刷机呢?
- 跟我学LabVIEW:什么是全局变量?如何创建及使用全局变量?
- 手机怎么把视频压缩到最小
- linux内核编程,实现内核之间的调用
热门文章
- java添加主函数,java方法,java主函数调用方法
- javascript中的Reflect对象是什么?如何使用Reflect?
- Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pyp
- 实现一个简单的文字云
- ViewPager基本用法
- zz迅雷7无法自动登录解决办法
- 我的python学习之路_我的Python入门之路
- WSL2迁移系统盘的docker-desktop和docker-desktop-data到其他盘
- 赛马网基本算法之--翻转数组
- 数字电路-逻辑代数基础