首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOCX到PDF转换程序

DOCX到PDF转换程序
EN

Stack Overflow用户
提问于 2022-06-27 07:12:25
回答 1查看 252关注 0票数 1

我正在制作一个doc转换程序,我发生了如下错误:

我是编程中的乞丐,我不知道如何修复它,下面我粘贴python代码:

代码语言:javascript
复制
from flask import Flask
from flask import request, render_template, redirect, url_for, send_file
import os
from typing import Tuple
from docx2pdf import convert
#from tkinter import Tk,messagebox
#from tkinter import _tkinter
UPLOADER_FOLDER = ''
app = Flask(__name__)
app.config['UPLOADER_FOLDER'] = UPLOADER_FOLDER

@app.route('/')
@app.route('/index', methods=['GET', 'POST'])
def index():
    if request.method == "POST":
        def docx2pdf(input_file: str, output_file: str, pages: Tuple = None):
           if pages:
               pages = [int(i) for i in list(pages) if i.isnumeric()]

           result = convert(docx_file=input_file, pdf_file=output_file, pages=pages)
           summary = {
               "File": input_file, "Pages": str(pages), "Output File": output_file
            }

           print("\n".join("{}:{}".format(i, j) for i, j in summary.items()))
           return result
        file = request.files['filename']
        if file.filename!= '':
           file.save(os.path.join(app.config['UPLOADER_FOLDER'], file.filename))
           input_file = file.filename
           output_file = r"hello.pdf"
           docx2pdf(input_file, output_file)
           pdf = input_file.split(".")[0]+".pdf"
           print(pdf)
           lis=pdf.replace(" ", "=")
           return render_template("docx.html", variable=lis)
    return render_template("index.html")


@app.route('/docx', methods=['GET', 'POST'])
def docx():
    if request.method=="POST":
        lis = request.form.get('filename', None)
        lis = lis.replace("=", " ")
        return send_file(lis, as_attachment=True)
    return render_template("index.html")

if __name__=="__main__":
    app.debug = True
    app.run()

模板目录中有两个名为index.html和docx.html的模板,在Pycharm中如下所示:

有人知道我犯了什么错吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-27 07:27:43

您将参数传递到convert方法中,如下所示:

代码语言:javascript
复制
result = convert(docx_file=input_file, pdf_file=output_file, pages=pages)

但是docx2pdf convert方法的定义如下:

代码语言:javascript
复制
def convert(input_path, output_path=None, keep_active=False):

正如您所看到的,没有名为docx_file的参数,因此您会得到该参数意外的错误。要解决这个问题,要么干脆去掉名称:

代码语言:javascript
复制
result = convert(input_file, output_file)

或使用正确的参数名称:

代码语言:javascript
复制
result = convert(input_path=input_file, output_path=output_file)

我还看到您传递了一个名为pages的变量。我不熟悉这个库,所以我不能百分之百地确定,但是我没有在任何地方找到一个参数名为pages的convert函数。

由于您是在PyCharm中,右键单击convert函数并选择Go到->声明来查看该方法。您应该能够看到该函数的功能。这个库的文档有限,因此您必须依赖于阅读代码才能理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72768203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档