猫史档案馆


【Python作品分享】文件转PDF【作业帖】

用户:代码荣耀者代码荣耀者查看:0 回复:1 评论:0 创建时间:2021-08-21T13:05:25


【作品展示】

center_image

 

【作品介绍】

跟上面的图片无关,效果图传不上去,只能用这个代替而,这是一个文件转PDF的系统,代码是以上课是提交的作业为基础,添加了许多(例如交互式窗口)功能的升级代码。它可以把任意后缀任意类型(除了文件夹)的文件(包括但不限于py文件,word文档等文件)转换为PDF,只需输入路径和文件名的三个参数,系统就能帮你一键转换为PDF!代码开源,欢迎下载和再创作!!!谢谢大家!

 

【作品源代码】

from reportlab.platypus import SimpleDocTemplate,Paragraph,PageBreak,Spacer
from reportlab.platypus.xpreformatted import PythonPreformatted
from reportlab.lib.styles import getSampleStyleSheet,ParagraphStyle
import webbrowser
import os
from glob import *
from easygui import *

from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFont


def file_To_pdf(myDir,fn,save_Dir,myName):
    registerFont(TTFont("简体中文",r"F:/鲁常欣 与竹独行/编程素材/fangzheng.TTF"))
    na,ext = os.path.splitext(fn)
    if na == "*":
        na = "所有后缀名为“"+ext+"”的文件"

    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name="Normal_Chinese",parent=styles["Normal"],fontName="简体中文"))
    styles.add(ParagraphStyle(name="Code_Chinese",parent=styles["Code"],fontName="简体中文"))

    doc = SimpleDocTemplate(save_Dir+os.sep+na+".pdf",
                            title="源码手帐",
                            author=myName,
                            subject="PDF效果展示",
                            keywords=["Reportlab自动生成","SimpleDocTemplate模板","PDF文档模板","文件自动转PDF"]
    )
    content = []

    file_list = glob(myDir+os.sep+fn,recursive=True)

    self_name = os.path.basename(__file__)
    if self_name in file_list:
        file_list.remove(self_name)

    for name in file_list:
        with open(name,"r",encoding="utf-8") as f:
            code = f.read()
            f.close()
        real_name = name.replace(myDir+os.sep,"")
        content.append(Paragraph(real_name,styles["Normal_Chinese"]))
        content.append(Spacer(20,20))
        content.append(PythonPreformatted(code,styles["Code_Chinese"]))
        content.append(PageBreak())
        
    doc.build(content)



msgbox("欢迎来到文件转PDF系统!", '文件转PDF', '开始')

myDir = enterbox(msg="请输入你要转换的文件名所在的路径(相对绝对路径都行)(不含文件名)(不输入默认为“F:/鲁常欣 与竹独行/作品中转/优秀py作品”)", title="文件转PDF", strip=True, image=None, root=None)
fn = enterbox(msg="请输入你要转换的文件名(含后缀名,不含文件路径)(不输入就自动退出)", title="文件转PDF", strip=True, image=None, root=None)
if fn == None:
    msgbox("再见", '文件转PDF', '退出')
    exit()
save_Dir = enterbox(msg="你想保存到哪?请输入保存路径(相对绝对路径都行)(不含文件名)(不输入默认为F:/鲁常欣 与竹独行/编程素材)", title="文件转PDF", strip=True, image=None, root=None)
if myDir == None:
    myDir = "F:/鲁常欣 与竹独行/作品中转/优秀py作品"
if save_Dir == None:
    save_Dir = "F:/鲁常欣 与竹独行/编程素材"
myName = enterbox(msg="请输入作者姓名:(不输入默认为“未知作者”)", title="文件转PDF", strip=True, image=None, root=None)
if myName == None or myName == "":
    myName == "未知作者"

file_To_pdf(myDir,fn,save_Dir,myName)
msgbox("已转换并保存", '文件转PDF', '打开')

webbrowser.open("file://" + os.path.realpath(save_Dir+os.sep+na+".pdf"))

# ReportLab 官方文档
# 你可以阅读 ReportLab 的官方文档来进行更多的探索。因为是全英文的,可以借助电子词典等工具来辅助自己完成阅读。

# 用户手册:https: // www.reportlab.com/docs/reportlab-userguide.pdf

# API 文档: https: // www.reportlab.com/docs/reportlab-reference.pdf

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
代码荣耀者代码荣耀者

这个需要下载第三方库reportlab库,欢迎下载!谢谢大家!

点赞0


评论