—用python写PDF转换器

2021-03-21 12:25

阅读:801

标签:false   描述   idp   fine   nbsp   sha   vpd   adp   同步   

前言

某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~
当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。
于是,我决定开一个专题,便称之为kimol君的无聊小发明
妙…啊~~~

想必小伙伴都经历过,当你想要把PDF转为WORD时,自己打字赫赫甩在你眼前:
技术图片
不充钱就想白嫖?? 想得美~
然而,kimol君是不会退缩的,毕竟迎难而上是传统美德。于是,今天的主题出来了:用python写一个PDF转WORD的小工具(基于某网站接口)。

一、思路分析

网上一搜,你可以发现很多PDF转换的工具,其中不乏在线转换的网站,比如这样的:
技术图片
那么,通过网站提供的测试接口,我们便可以通过爬虫模拟的方式实现转换。
没有错了~思路就是如此的简单明了,今天的主角便是:

https://app.xunjiepdf.com
  • 1

通过抓包分析,知道这是一个POST请求,接下来用requests库模拟即可。
需要注意的是,这个接口仅用于测试,所以可供转换的页面等都有所限制,如需更完整的功能还请支持原版。

二、我的代码

正所谓一万个coders,就有一万种codes,以下为我的代码,仅供参考。
导入相关库:

import time
import requests
  • 1
  • 2

定义PDF2Word类:

class PDF2Word():
    def __init__(self):
        self.machineid = ‘ccc052ee5200088b92342303c4ea9399‘
        self.token = ‘‘
        self.guid = ‘‘
        self.keytag = ‘‘
    
    def produceToken(self):
        url = ‘https://app.xunjiepdf.com/api/producetoken‘
        headers = {
                ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0‘,
                ‘Accept‘: ‘application/json, text/javascript, */*; q=0.01‘,
                ‘Accept-Language‘: ‘zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2‘,
                ‘Content-Type‘: ‘application/x-www-form-urlencoded; charset=UTF-8‘,
                ‘X-Requested-With‘: ‘XMLHttpRequest‘,
                ‘Origin‘: ‘https://app.xunjiepdf.com‘,
                ‘Connection‘: ‘keep-alive‘,
                ‘Referer‘: ‘https://app.xunjiepdf.com/pdf2word/‘,}
        data = {‘machineid‘:self.machineid}
        res = requests.post(url,headers=headers,data=data)
        res_json = res.json()
        if res_json[‘code‘] == 10000:
            self.token = res_json[‘token‘]
            self.guid = res_json[‘guid‘]
            print(‘成功获取token‘)
            return True
        else:
            return False
    
    def uploadPDF(self,filepath):
        filename = filepath.split(‘/‘)[-1]
        files = {‘file‘: open(filepath,‘rb‘)}
        url = ‘https://app.xunjiepdf.com/api/Upload‘
        headers = {
                ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0‘,
                ‘Accept‘: ‘*/*‘,
                ‘Accept-Language‘: ‘zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2‘,
                ‘Content-Type‘: ‘application/pdf‘,
                ‘Origin‘: ‘https://app.xunjiepdf.com‘,
                ‘Connection‘: ‘keep-alive‘,
                ‘Referer‘: ‘https://app.xunjiepdf.com/pdf2word/‘,}
        params = (
                (‘tasktype‘, ‘pdf2word‘),
                (‘phonenumber‘, ‘‘),
                (‘loginkey‘, ‘‘),
                (‘machineid‘, self.machineid),
                (‘token‘, self.token),
                (‘limitsize‘, ‘2048‘),
                (‘pdfname‘, filename),
                (‘queuekey‘, self.guid),
                (‘uploadtime‘, ‘‘),
                (‘filecount‘, ‘1‘),
                (‘fileindex‘, ‘1‘),
                (‘pagerange‘, ‘all‘),
                (‘picturequality‘, ‘‘),
                (‘outputfileextension‘


评论


亲,登录后才可以留言!