用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小時內與您取得聯系。