整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          pdfkit - 利用python實現html文件轉

          pdfkit - 利用python實現html文件轉pdf

          用jupyter notebook寫代碼文檔的時候,有時需要導出pdf版本,但jupyter會報錯。我在想,除了網上的debug方法,還沒有其他方案可以生成pdf。

          度娘搜了下,很多博客推薦Python的第三方庫pdfkit,可以將網頁、html文件以及字符串生成pdf文件。

          其實也有很多軟件提供pdf生成服務,但這樣太不python了,那下面就來試試pdfkit怎么用吧!

          三步實現自動生成pdf文檔:

          1.使用pip安裝pdfkit庫

          python版本 3.x,在命令行輸入:

          pip install pdfkit

          安裝過程基本不會有啥問題,出現上面的Successfully installed pdfkit-0.6.1提示,說明安裝成功了。

          2.安裝wkhtmltopdf.exe文件

          注:pdfkit是基于wkhtmltopdf的python封裝,所以需要安裝wkhtmltopdf.exe。wkhtmltopdf是輕量級軟件,非常很容易安裝。

          下載地址:https://wkhtmltopdf.org/downloads.html

          下載wkhtmltopdf

          下載完成后,一路next,將wkhtmltopdf安裝好。

          務必要記住安裝地址,找到wkhtmltopdf.exe文件所在的絕對路徑,后面要用到。

          我這里是默認路徑""C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe""

          安裝wkhtmltopdf

          3.使用pdfkit庫生成pdf文件

          前面說過pdfkit可以將網頁、html文件、字符串生成pdf文件。

          • 網頁url生成pdf【pdfkit.from_url()函數】
          # 導入庫
          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')
          • html文件生成pdf【pdfkit.from_file()函數】
          # 導入庫
          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')
          • 字符串生成pdf【pdfkit.from_string()函數】
          # 導入庫
          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')

          4.結論

          本文講了如何在Python中使用pdfkit庫生成pdf文件,非常方便快捷,適合批量自動化操作。

          我們看看生成的pdf效果如何:

          pdf效果展示

          整體頁面視覺不錯呦,趕快用起來吧!

          有天老板找我到辦公室跟我說要做一個商城,商城賣出去東西就有傭金可以拿。我聽著就頭大。老板打開電腦給我看了網站:你看一下這個網站,照著它的流程就可以擁有一個商城了。我靠過去一看,大概了解一下:原來是利用第三方工具就可以構建一個導購網站,只要消費者在網站領取優惠券就會自動跳轉到某bao的購買頁面,購買成功后就可以有傭金了。我看了一下覺得可以,只要不讓我敲代碼一切好說。于是我照著流程構建了一個網站,然后勾選了很多零食進行推廣,然后我就發現了一個問題:我只勾選了一些零食啊,商城怎么還有其它類型的商品?我思索了一下就明白了,這網站還是挺流氓的,還摻雜著其他人的推廣鏈接,我一想這樣不行,轉化率肯定低啊。果不其然,試用了一天就只有5個單子,因為公司的網站還是挺有流量的,所以這轉化率不可能這么低。老板看了一下,覺得沒什么用讓我把商城入口給關了,我只好照做,但是我心里對這流氓網站不服啊,于是我打算自己做一個導購網站。(最后還是要敲代碼(。?_?)/~~~)

          想法

          1. 在推廣平臺上下載一個商品清單的excel文檔,文檔的內容包含:商品的名稱、商品的主圖鏈接、商品分類、商品價格、商品推廣鏈接.....。
          2. 利用python讀取excel,獲得分類、商品信息的json文件。
          3. 創建一個html頁面讀取json文件,把分類和商品顯示出來,利用html中的錨點定位,點擊就會滾動到對應的分類商品,就可以選擇心儀的商品下單,從而達到推廣商品的作用了。

          行動

          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比較卡)

          遺留問題

          1. 導購頁面沒有樣式,不夠美觀。
          2. 沒有顯示商品圖片,由于excel文檔中有1萬條商品信息,把一萬張圖片顯示出來太卡了。

          是繼《用命令行控制音樂播放器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
          

          不過,靜音的選項,在我的幾臺筆記本上都不是百分百起作用。用內置的喇叭時,可以正常的切換;但是插上耳機以后,可以設置靜音,但是取消靜音就要重新插拔耳機插頭才起作用。估計是跟筆記本的耳機插座有關系,它會檢查一下是否有耳機插入。

          結語

          最近幾天的文章,都是關于命令行的小技巧,全是敲代碼比較枯燥,所以感興趣的人也比較少。盡管如此,我還會堅持分享類似的內容,慢慢積累起來以后,依然可以讓電腦更好的運作!


          主站蜘蛛池模板: 性色av一区二区三区夜夜嗨| 免费看AV毛片一区二区三区| 精品一区二区三区免费毛片爱| 亚洲高清日韩精品第一区 | 亚洲乱码一区二区三区在线观看| 精品三级AV无码一区| 成人精品一区二区三区不卡免费看| 国产一区二区不卡老阿姨| 国产高清不卡一区二区| 久久99国产一区二区三区| 国产一区二区三区播放| 夜精品a一区二区三区| 亚洲国产成人久久一区二区三区| 久久综合九九亚洲一区| 日韩一区二区电影| 精品人妻一区二区三区毛片 | 97久久精品无码一区二区| 老熟妇仑乱视频一区二区| 亚洲AV综合色一区二区三区| 日本精品高清一区二区| 中文字幕AV一区中文字幕天堂| 成人免费av一区二区三区| 中文字幕一区二区在线播放| 国产成人精品一区二区三区| 亚洲AV无码一区二三区| 国产美女av在线一区| 中日韩一区二区三区| 国产成人精品无码一区二区三区 | 亚洲第一区精品日韩在线播放| 国产成人AV区一区二区三| 日韩A无码AV一区二区三区 | 性色av无码免费一区二区三区| 成人免费一区二区无码视频| 日本人的色道www免费一区| 无码人妻精品一区二区蜜桃百度 | 中文字幕精品一区二区三区视频| 精品一区二区三区四区在线| 国产裸体歌舞一区二区| 99热门精品一区二区三区无码| 无码视频免费一区二三区| 动漫精品第一区二区三区|