当前位置:首页 > 技术 > Python > 正文内容

word转换服务python版本

Watrt2年前 (2023-04-07)Python9820

网页无法打开word文档。但是可以转换为pdf来在网页上找开。用python实现在线转换服务。

from flask import Flask, request, jsonify,redirect,send_from_directory
from win32com.client import constants,gencache
import requests
import os
import pythoncom

app = Flask(__name__)

#定义pdf方法
'''
wordPath:word的文件路径
pdfPath:pdf生成的路径
'''
def Word_to_Pdf(Word_path,Pdf_path):
    pythoncom.CoInitialize()
    word = gencache.EnsureDispatch('Word.Application')
    doc = word.Documents.Open(Word_path,ReadOnly = 1)
    # 转换方法
    doc.ExportAsFixedFormat(Pdf_path,constants.wdExportFormatPDF)
    word.Quit()
@app.route('/convert', methods=['POST'])
def convert_file():
    file_url = request.json.get('fileurl')  # 获取JSON请求中的文件地址参数
    if not file_url:
        return jsonify({'error': '文件参数错误'}), 400  # 如果没有传递文件地址参数,返回错误
    doc_filename = file_url.split('/')[-1]  # 提取文件名
    doc_filepath = os.path.join(os.getcwd()+'./tmp', doc_filename)  # 临时文件路径
    pdf_filename = doc_filename.split('.')[0] + '.pdf'  # 将文件名后缀更改为.pdf
    pdf_filepath = os.path.join(os.getcwd()+'/tmp', pdf_filename)  # 临时PDF文件路径
    r = requests.get(file_url)
    with open(doc_filepath,"wb") as code:
        code.write(r.content)
    print(doc_filepath)
    print(pdf_filepath)
    try:
        Word_to_Pdf(doc_filepath, pdf_filepath)  # 将Word文档转换为PDF
    except Exception as e:
        return jsonify({'error': str(e)}), 500  # 转换失败,返回错误
    return jsonify({'pdfurl': f'http://localhost:88/pdf/{pdf_filename}'}), 200  # 如果成功,返回PDF文件地址

@app.route('/pdf/<filename>', methods=['GET'])
def get_pdf(filename):
    
     root_dir = os.getcwd()
     print(os.path.join(root_dir, 'tmp'))
     return send_from_directory(os.path.join(root_dir, 'tmp'), filename)

if __name__ == '__main__':
    app.run('127.0.0.1',"88")

上来代码已经通过测试。注意模块的安装。转换是调用的win32接口。请求使用json格式如下:

{
    "fileurl": "http://www.028icp.com/upfiles/fujian/20101029152391314456.doc"
}

请求地址是:http://127.0.0.1:88/convert

成功后返回的格式如下:

{
    "pdfurl": "http://localhost:88/pdf/20101029152391314456.pdf"
}

image.png

分享给朋友:

相关文章

python编写的简单http请求和应答

python编写的简单http请求和应答

响应(服务端)import machine import socket pins = [machine.Pin(i, machine.Pin.IN) for i in (0, 2, 4, 5, 12, 13, 14, 15)] adc = machine.ADC(0) html = &quo...

micropython 使用oled显示前面设置的时间。

micropython 使用oled显示前面设置的时间。

from machine import I2C, Pin import ssd1306,time    #这里引用的是官方的ssd1306库。可以在github上下载下来放入库中。 i2c = I2C(-1, Pin(14), Pin(2)) display = ssd1306.SSD1306_I2C(128, 64, i...

micropython连接到wifi上面

micropython连接到wifi上面

import network,time,ujson,urequests,ntptime from machine import RTC nic=network.WLAN(network.STA_IF) nic.active(True) #nic.connect('ZCWH','00004157') nic.connect('028sd.com','88884444') nic.co...

python利用pyinstaller打包简明教程

python利用pyinstaller打包简明教程

在创建了独立应用(自包含该应用的依赖包)之后,还可以使用 PyInstaller 将 Python 程序生成可直接运行的程序,这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上运行。安装 PyInstallePython 默认并不包含 PyInstaller 模块,因此需要自行安装 PyInstaller 模块。安装 PyInstaller 模块与安装其他 Python 模块一样,使用 pip 命令安装即可。在命令行输入如下命令:pip install ...

用mpy-cross保护py文件

用mpy-cross保护py文件

在python中,可以将py文件编译为pyc文件。编译后的pyc文件是二进制格式,一是可以加快加载速度,更重要的是可以保护原始代码。在micropython中同样提供了这个功能,只是它将pyc改名为mpy,编译出的文件扩展名是.mpy。要使用这个功能,首先,我们需要产生mpy-cross工具。在micropython目录下,进入mpy-cross子目录,然后在命令行下输入make编译产生mpy-cross执行文件(需要先安装gcc编译器)。在windows会产生mpy-cross.exe,在li...

micropython解码bmp

micropython解码bmp

from ST7735 import TFT,TFTColor from machine import SPI,Pin spi = SPI(2, baudrate=20000000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(13), miso=Pin(12)) tft=TFT(spi,16,17,18)...

pyqt5 开发入门

pyqt5 开发入门

使用:pyqt5-tools designer 进行窗口设计使用命令:pyuic5 -o textedit.py textedit.ui  把设计的UI文件转换成py文件注意:使用对话框的话要继承于class Ui_MainWindow(QtWidgets.QMainWindow):使用信号的方法:self.actionnew.triggered.connect(self.new_btn)    self.new_btn 为当前类下的方法下面示例:#&nb...

micropython 1.17编译出现FAILED: esp-idf/mbedtls/x509_crt_bundle

micropython 1.17编译出现FAILED: esp-idf/mbedtls/x509_crt_bundle

micropython 1.17编译出现FAILED: esp-idf/mbedtls/x509_crt_bundle 错误解决方法。出现错误的原因是ssl中的证书过期了。解决办法:1:(Top) > Component config > mbedTLS > Certificate Bundle->Enable trusted root certificate bundle   禁用2:修改配置文件 :sdkconfig.base  中添加入...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。