Python 保存Log txt信息,并转成pdf,支持中文

# coding=UTF-8
    import  os
    from reportlab.pdfgen.canvas import Canvas
    from reportlab.pdfbase import pdfmetrics
    from reportlab.pdfbase.ttfonts import TTFont

    pdfmetrics.registerFont(TTFont('msyh', 'msyh.ttf'))

    def LogMessage( msg, bisLogMsg=True):
        savingmsg = ''
        savingmsg = savingmsg + QtCore.QDate.currentDate().toString("yyyy-MM-dd")
        savingmsg = savingmsg + ' ' + QtCore.QTime.currentTime().toString("HH:mm:ss")
        savingmsg = savingmsg + ' ' + msg
        if bisLogMsg:
            savingLogMsg(savingmsg)
        else:
            savingResultMsg(savingmsg)

    def savingLogMsg(self, logmsg):
        if not os.path.exists('./log'):
            os.makedirs('./log')
        self.savingtxtmsg = open('./log/autotlog.txt', 'a')
        self.savingtxtmsg.write(logmsg)
        self.savingtxtmsg.write('\n')
        self.savingtxtmsg.close()
    def savingResultMsg(resultmsg):
        if not os.path.exists('./log'):
            os.makedirs('./log')
        savingtxtmsg = open('./log/result.txt', 'a')
        savingtxtmsg.write(resultmsg)
        savingtxtmsg.write('\n')
        savingtxtmsg.close()
        TxtToPdf('./log/result.txt','./log/result.pdf')

    def TxtToPdf(strSourceTxt,strTargetPdf):
        ptr = open(strSourceTxt, "r")  # text file I need to convert
        lineas = ptr.readlines()
        ptr.close()

        numeroLinea = 0
        p = Canvas(strTargetPdf)
        while numeroLinea < len(lineas):
            i = 750
            for linea in lineas[numeroLinea:numeroLinea + 60]:
                if 'fail' in linea:
                    p.setFont('msyh', 10)
                    p.setFillColorRGB(0, 0, 0.77)
                else:
                    p.setFont('msyh', 8)
                    p.setFillColorRGB(0, 0, 0)
                p.drawString(15, i, linea.strip())
                numeroLinea += 1
                i -= 12
            p.showPage()

        p.save()
LogMessage('Save System State: pass', False)
在Django实现Ajax上传PDF文件,并将其保存到服务器,可以按照以下步骤操作: 1. **安装依赖**: 首先,你需要安装`django-file-forms`库,它支持处理文件上传。你可以通过命令行安装: ``` pip install django-file-forms ``` 2. **模型定义**: 在Django的models.py文件,创建一个文件字段来存储PDF文档: ```python from django.db import models class Document(models.Model): file = models.FileField(upload_to='pdfs/') ``` `upload_to`参数用于指定文件上传后的路径。 3. **视图函数**: 创建一个视图函数,接收POST请求,处理文件上传: ```python from django.shortcuts import render, redirect from .forms import DocumentForm def upload_pdf(request): if request.method == 'POST': form = DocumentForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('success_url') # 跳转到成功页面 else: form = DocumentForm() return render(request, 'upload_form.html', {'form': form}) ``` 使用`DocumentForm`来处理表单数据,该表单需要从`forms.py`导入。 4. **HTML模板**: 在`templates`目录下创建一个`upload_form.html`文件,包含一个HTML表单来让用户选择文件上传: ```html <html> {% load crispy_forms_tags %} ... <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form|crispy }} <button type="submit">Upload</button> </form> </html> ``` 使用`crispy_forms`库来美化表单。 5. **AJAX提交**: 在前端使用JavaScript (如jQuery) 或 Axios 等库,实现文件选择并异步发送至服务器。示例用jQuery: ```javascript $('#upload-btn').on('click', function() { var formData = new FormData($('form')[0]); $.ajax({ url: '{% url 'upload_pdf' %}', type: 'POST', data: formData, cache: false, contentType: false, processData: false, success: function(data) { // 成功后跳转或显示提示信息 console.log("File uploaded successfully"); }, error: function(err) { console.error("Error uploading file:", err); } }); }); ``` 6. **URL配置**: 在`urls.py`配置视图对应的URL路由。 记得替换上述代码的`success_url`为你实际应用的成功页面URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COSummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值