用jupyter notebook写代码文档的时候,有时需要导出pdf版本,但jupyter会报错。我在想,除了网上的debug方法,还没有其他方案可以生成pdf。
度娘搜了下,很多博客推荐Python的第三方库pdfkit,可以将网页、html文件以及字符串生成pdf文件。
其实也有很多软件提供pdf生成服务,但这样太不python了,那下面就来试试pdfkit怎么用吧!
python版本 3.x,在命令行输入:
pip install pdfkit
安装过程基本不会有啥问题,出现上面的Successfully installed pdfkit-0.6.1提示,说明安装成功了。
注:pdfkit是基于wkhtmltopdf的python封装,所以需要安装wkhtmltopdf.exe。wkhtmltopdf是轻量级软件,非常很容易安装。
下载地址:https://wkhtmltopdf.org/downloads.html
下载wkhtmltopdf
下载完成后,一路next,将wkhtmltopdf安装好。
务必要记住安装地址,找到wkhtmltopdf.exe文件所在的绝对路径,后面要用到。
我这里是默认路径""C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe""
安装wkhtmltopdf
前面说过pdfkit可以将网页、html文件、字符串生成pdf文件。
# 导入库
import pdfkit
'''将网页url生成pdf文件'''
def url_to_pdf(url, to_file):
# 将wkhtmltopdf.exe程序绝对路径传入config对象
path_wkthmltopdf=r'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
config=pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
# 生成pdf文件,to_file为文件路径
pdfkit.from_url(url, to_file, configuration=config)
print('完成')
# 这里传入我知乎专栏文章url,转换为pdf
url_to_pdf(r'https://zhuanlan.zhihu.com/p/69869004', 'out_1.pdf')
# 导入库
import pdfkit
'''将html文件生成pdf文件'''
def html_to_pdf(html, to_file):
# 将wkhtmltopdf.exe程序绝对路径传入config对象
path_wkthmltopdf=r'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
config=pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
# 生成pdf文件,to_file为文件路径
pdfkit.from_file(html, to_file, configuration=config)
print('完成')
html_to_pdf('sample.html','out_2.pdf')
# 导入库
import pdfkit
'''将字符串生成pdf文件'''
def str_to_pdf(string, to_file):
# 将wkhtmltopdf.exe程序绝对路径传入config对象
path_wkthmltopdf=r'C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe'
config=pdfkit.configuration(wkhtmltopdf=path_wkthmltopdf)
# 生成pdf文件,to_file为文件路径
pdfkit.from_string(string, to_file, configuration=config)
print('完成')
str_to_pdf('This is test!','out_3.pdf')
本文讲了如何在Python中使用pdfkit库生成pdf文件,非常方便快捷,适合批量自动化操作。
我们看看生成的pdf效果如何:
pdf效果展示
整体页面视觉不错呦,赶快用起来吧!
有天老板找我到办公室跟我说要做一个商城,商城卖出去东西就有佣金可以拿。我听着就头大。老板打开电脑给我看了网站:你看一下这个网站,照着它的流程就可以拥有一个商城了。我靠过去一看,大概了解一下:原来是利用第三方工具就可以构建一个导购网站,只要消费者在网站领取优惠券就会自动跳转到某bao的购买页面,购买成功后就可以有佣金了。我看了一下觉得可以,只要不让我敲代码一切好说。于是我照着流程构建了一个网站,然后勾选了很多零食进行推广,然后我就发现了一个问题:我只勾选了一些零食啊,商城怎么还有其它类型的商品?我思索了一下就明白了,这网站还是挺流氓的,还掺杂着其他人的推广链接,我一想这样不行,转化率肯定低啊。果不其然,试用了一天就只有5个单子,因为公司的网站还是挺有流量的,所以这转化率不可能这么低。老板看了一下,觉得没什么用让我把商城入口给关了,我只好照做,但是我心里对这流氓网站不服啊,于是我打算自己做一个导购网站。(最后还是要敲代码(。?_?)/~~~)
1. 安装xlrd
cmd窗口: pip install xlrd
2.创建index.py,导入模块
import xlrd
3.打开Excel文件读取数据
wb=xlrd.open_workbook('文件路径')
4.获取表格
sheet1=wb.sheet_by_index(0) #这里的excel文档内只有一个表格,0代表第一个
5.获取表格的行数
rows=sheet1.nrows
6.获取表格中的类目
商品一级类目
住宅家具
影音电器
影音电器
美容护肤
厨房电器
运动服/休闲服装
餐饮具
category0=sheet1.col_values(4) #获取列内容(类目),这里excel文档的第四列是类目 del category0[0] #删除列表中的 "商品一级类目" category=sorted(set(category0),key=category0.index) #类目列表->去除重复
7.整理数据
[ [ 分类名, [商品信息] ], [ 分类名, [商品信息] ] ] data=[] for i,v in enumerate(category): data.append([v,[]]) for i,v in enumerate(data): for x in range(rows): if v[0]==sheet1.cell(x,4).value: data[i][1].append(sheet1.row_values(x))
8.导出json文件
jsonData=json.dumps(data, ensure_ascii=False) with open('results.json', 'w',encoding="utf-8") as f: f.write(jsonData)
9.运行index.py,获得json文件
cmd窗口:python index.py
10.创建html页面,并引用json文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script>//引用jquery $(function(){ function color16(){//十六进制颜色随机 var r=Math.floor(Math.random()*256); var g=Math.floor(Math.random()*256); var b=Math.floor(Math.random()*256); var color='#'+r.toString(16)+g.toString(16)+b.toString(16); return color; } var navo='';//类目导航 var info='';//商品内容 $.get('./results.json', function(data) {//请求json文件 $.each(data, function(index, val) { navo+="<a href='#"+val[0]+"''>"+val[0]+"</a> " });//把json文件中的类目数组遍历出来,并用锚定位 $.each(data, function(index, val) { var div_title="<div id='"+val[0]+"' style='float:left;'>"; var div_content=""; $.each(val[1], function(index, val) { div_content+="<div style='background:"+color16()+"' onclick=\"location.href=\'"+val[21]+"\'\" class='pro_img'>"+val[1]+"<span class='money'>¥"+val[6]+"</span><\/div>" }); var div_footer="</div><br>"; info+=div_title+div_content+div_footer }); $('#nav').html(navo);//把导航显示出来 $('#content').html(info);//把商品显示出来 },'json'); }) </script> <style> #content{ margin-top: 10px } .money{ position: absolute; left: 0; bottom: 0; height: 30px; line-height: 30px; color: #e22a40; font-weight: 700 } .pro_img{ position: relative; float: left; width: 220px; height: 220px; line-height: 220px; text-align: center; border: 1px solid #eee; cursor: pointer; font-size: 30px; white-space:normal; overflow:hidden; /*超过部分不显示*/ text-overflow:ellipsis; /*超过部分用点点表示*/ white-space:nowrap;*//*不换行 } </style> </head> <body> <div id="nav"></div> <div id="content"></div> </body> </html>
https://fjxasdf.github.io/daogou (github比较卡)
是继《用命令行控制音乐播放器foobar2000》之后,第二篇关于命令行控制的铺垫文章。
NirCmd——Windows命令行工具
NirCmd控制Wndows音量
NirCmd已经不是一个很新的软件了,官网的最新版是v2.81,更新时间为2016-05-23,是否停止更新不得而知。
http://www.nirsoft.net/utils/nircmd.html
从官网看介绍,这个工具功能非常多,我无法一一验证。我只是测试了控制Windows音量的功能,NirCmd在Windows 10还可以正常工作。即使软件旧一点,能用就行。软件分x86和64bit的版本,下载地址在官网的最下面。请大家自行前往下载使用。
NirCmd调整音量,有3个参数:changesysvolume,setsysvolume,mutesysvolume。
(1) changesysvolume:
调整音量,把当前音量增大或者减小的幅度,正数表示增大,负数表示减小。取值范围是0~65535,对应Windows里面音量百分制的0~100,所以设置的时候,要用65535÷100转换,四舍五入取整数。
把当前音量增大10(65535÷100×10=6554):
nircmd.exe changesysvolume 6554
把当前音量减小20(65535÷100×10=13107):
nircmd.exe changesysvolume -13107
(2) setsysvolume:
设定音量,把音量设置为指定值。取值范围同样是0~65535。
把音量设为最小,相当于静音:
nircmd.exe setsysvolume 0
把音量设为中间值50(65535÷100×50=32768):
nircmd.exe setsysvolume 32768
把音量设为最大100:
nircmd.exe setsysvolume 65535
(3) mutesysvolume:
静音切换参数,有3个参数:0,1,2。
取消静音:
nircmd.exe mutesysvolume 0
设置静音:
nircmd.exe mutesysvolume 1
静音和非静音直接切换:
nircmd.exe mutesysvolume 2
不过,静音的选项,在我的几台笔记本上都不是百分百起作用。用内置的喇叭时,可以正常的切换;但是插上耳机以后,可以设置静音,但是取消静音就要重新插拔耳机插头才起作用。估计是跟笔记本的耳机插座有关系,它会检查一下是否有耳机插入。
结语
最近几天的文章,都是关于命令行的小技巧,全是敲代码比较枯燥,所以感兴趣的人也比较少。尽管如此,我还会坚持分享类似的内容,慢慢积累起来以后,依然可以让电脑更好的运作!
*请认真填写需求信息,我们会在24小时内与您取得联系。