猫史档案馆


【Python作品分享】图片转pdf

用户:活泼的重金怪MO3m活泼的重金怪MO3m查看:0 回复:0 评论:0 创建时间:2021-01-03T10:45:38


【作品展示】

center_image

 

【作品介绍】

图片转pdf

库:

PySide2

(创建bat文件,写入 cmd /k "cd /d C:\Pyblock\resources\app\Python-win喵&&python -m pip uninstall pyside2&&python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside2==5.12.3" ,然后运行)

Pillow

 

【作品源代码】

from PySide2 import QtCore, QtGui, QtWidgets


class Ui_pictopdf3(object):
    def setupUi(self, pictopdf3):
        pictopdf3.setObjectName("pictopdf3")
        pictopdf3.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(pictopdf3)
        self.centralwidget.setObjectName("centralwidget")
        self.showpic = QtWidgets.QPushButton(self.centralwidget)
        self.showpic.setGeometry(QtCore.QRect(20, 80, 421, 381))
        self.showpic.setText("")
        self.showpic.setObjectName("showpic")
        self.title = QtWidgets.QLabel(self.centralwidget)
        self.title.setGeometry(QtCore.QRect(170, 10, 461, 51))
        font = QtGui.QFont()
        font.setPointSize(14)
        self.title.setFont(font)
        self.title.setAlignment(QtCore.Qt.AlignCenter)
        self.title.setObjectName("title")
        self.pbtnpre = QtWidgets.QPushButton(self.centralwidget)
        self.pbtnpre.setGeometry(QtCore.QRect(470, 330, 131, 41))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pbtnpre.setFont(font)
        self.pbtnpre.setObjectName("pbtnpre")
        self.pbtnnext = QtWidgets.QPushButton(self.centralwidget)
        self.pbtnnext.setGeometry(QtCore.QRect(650, 330, 131, 41))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pbtnnext.setFont(font)
        self.pbtnnext.setObjectName("pbtnnext")
        self.delpic = QtWidgets.QPushButton(self.centralwidget)
        self.delpic.setGeometry(QtCore.QRect(470, 420, 311, 41))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.delpic.setFont(font)
        self.delpic.setObjectName("delpic")
        self.done = QtWidgets.QPushButton(self.centralwidget)
        self.done.setGeometry(QtCore.QRect(20, 510, 761, 61))
        font = QtGui.QFont()
        font.setPointSize(14)
        self.done.setFont(font)
        self.done.setObjectName("done")
        self.imgopen = QtWidgets.QPushButton(self.centralwidget)
        self.imgopen.setGeometry(QtCore.QRect(450, 80, 331, 51))
        font = QtGui.QFont()
        font.setPointSize(13)
        self.imgopen.setFont(font)
        self.imgopen.setObjectName("imgopen")
        self.page = QtWidgets.QLabel(self.centralwidget)
        self.page.setGeometry(QtCore.QRect(130, 470, 201, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.page.setFont(font)
        self.page.setAlignment(QtCore.Qt.AlignCenter)
        self.page.setObjectName("page")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(450, 140, 171, 31))
        self.pushButton.setObjectName("pushButton")
        pictopdf3.setCentralWidget(self.centralwidget)

        self.retranslateUi(pictopdf3)
        QtCore.QMetaObject.connectSlotsByName(pictopdf3)

    def retranslateUi(self, pictopdf3):
        pictopdf3.setWindowTitle(QtWidgets.QApplication.translate(
            "pictopdf3", "图片转pdf", None, -1))
        self.title.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "图片转pdf [v1.4]", None, -1))
        self.pbtnpre.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "上一张", None, -1))
        self.pbtnnext.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "下一张", None, -1))
        self.delpic.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "移除", None, -1))
        self.done.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "生成pdf", None, -1))
        self.imgopen.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "打开图片", None, -1))
        self.page.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "1", None, -1))
        self.pushButton.setText(QtWidgets.QApplication.translate(
            "pictopdf3", "导入应用文件夹图片", None, -1))


class Ui_final3(object):
    def setupUi(self, final3):
        final3.setObjectName("final3")
        final3.resize(491, 201)
        self.centralwidget = QtWidgets.QWidget(final3)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(130, 50, 231, 51))
        font = QtGui.QFont()
        font.setPointSize(14)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.pbtn_canel = QtWidgets.QPushButton(self.centralwidget)
        self.pbtn_canel.setGeometry(QtCore.QRect(20, 150, 80, 41))
        font = QtGui.QFont()
        font.setPointSize(13)
        self.pbtn_canel.setFont(font)
        self.pbtn_canel.setObjectName("pbtn_canel")
        self.pbtn_ok = QtWidgets.QPushButton(self.centralwidget)
        self.pbtn_ok.setGeometry(QtCore.QRect(390, 150, 80, 41))
        font = QtGui.QFont()
        font.setPointSize(13)
        self.pbtn_ok.setFont(font)
        self.pbtn_ok.setObjectName("pbtn_ok")
        final3.setCentralWidget(self.centralwidget)

        self.retranslateUi(final3)
        QtCore.QMetaObject.connectSlotsByName(final3)

    def retranslateUi(self, final3):
        final3.setWindowTitle(QtWidgets.QApplication.translate(
            "final3", "生成pdf", None, -1))
        self.label.setText(QtWidgets.QApplication.translate(
            "final3", "确认输出?", None, -1))
        self.pbtn_canel.setText(
            QtWidgets.QApplication.translate("final3", "取消", None, -1))
        self.pbtn_ok.setText(
            QtWidgets.QApplication.translate("final3", "确认", None, -1))





import sys
import os
try:
    from PySide2.QtWidgets import *
    from PySide2.QtCore import *
    from PySide2.QtGui import *
except:
    print("Downloading program 'PySide2'")
    os.system("pip install - -index-ur喵snapshots/ci/pyside/5.12/latest pyside2 - -trusted-host download.qt.io")
try:
    from PIL import Image
except:
    print("Downloading program 'Pillow'")
    os.system("pip install Pillow")
# from ui_uipictopdf3 import Ui_pictopdf3
# from ui_final3 import Ui_final3
imglst=[]
showw=421
showh=381
class window_main(QMainWindow,Ui_pictopdf3):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.setup()
        self.show()
    def setup(self):
        self.pushButton.setVisible(False)
        #self.title.setText("图片转pdf [v1.4]")
        self.numset()
        self.itemsignal()
    def numset(self):
        self.num=0
        self.pagenum=1
    def itemsignal(self):
        self.pbtnpre.clicked.connect(self.pagepre)
        self.pbtnnext.clicked.connect(self.pagenext)
        self.imgopen.clicked.connect(self.fileopen)
        self.delpic.clicked.connect(self.imgdel)
        self.done.clicked.connect(self.finalrun)
        self.pushButton.clicked.connect(self.orgpic)
    def pagenext(self):
        if self.num0:
            self.num-=1
            self.pagenum=self.num+1
            self.showout()
    def fileopen(self):
        file, _ = QFileDialog.getOpenFileName(caption="", filter="(*.jpg *.png *.jpeg)")
        if file:
            imglst.append(file)
            self.pagenum=len(imglst)
            self.num=self.pagenum-1
            self.showout()
    def showout(self):
        self.showpic.setIcon(QIcon(imglst[self.num]))#len(imglst)-1
        self.showpic.setIconSize(QSize(showw,showh))
        self.page.setText(str(self.pagenum))
    def imgdel(self):
        if len(imglst)!=0:
            imglst.remove(imglst[self.num])
            if self.pagenum>1:
                self.pagenum-=1
            self.num=self.pagenum-1
            if len(imglst)!=0:
                self.showout()
            else:
                self.showout2()
    def showout2(self):
        self.showpic.setIcon(QIcon(None))
        self.page.setText(str(self.pagenum))
    def finalrun(self):
        if len(imglst)!=0:
            self.wind2=window2()
    def orgpic(self):
        if len(os.listdir(os.path.realpath("图片")))!=0:
            for z in os.listdir(os.path.realpath("图片")):
                if ".png" in z or ".jpg" in z or ".jpeg" in z:
                    imglst.append(os.path.join(os.path.join(os.getcwd(),"图片"),z))
            self.pagenum=len(imglst)
            self.num=self.pagenum-1
            self.pushButton.setVisible(False)
            self.showout()
class window2(QMainWindow,Ui_final3):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.setup()
        self.show()
    def setup(self):
        self.itemsignal()
    def itemsignal(self):
        self.pbtn_canel.clicked.connect(self.canelpress)
        self.pbtn_ok.clicked.connect(self.okpress)
    def canelpress(self):
        self.hide()
    def okpress(self):
        file, _ = QFileDialog.getSaveFileName(
            caption="", filter="(*.pdf)")
        if file:
            self.pdf_name=file
            self.label.setText("生成中...")
            self.pbtn_canel.setVisible(False)
            self.pbtn_ok.setVisible(False)
            self.mainsetup()
    def mainsetup(self):
        im_list=[]
        imgs=[]
        for v in imglst:
            imgs.append(v)
        im1 = Image.open(imgs[0]).convert("RGB")
        imgs.pop(0)
        for i in imgs:
            img = Image.open(i).convert("RGB")
            im_list.append(img)
        im1.save("%s" % self.pdf_name, "PDF", resolution=100.0,save_all=True, append_images=im_list)
        QMessageBox.information(self,"[提示]","文件已保存")
        self.hide()
if __name__=="__main__":
    app=QApplication(sys.argv)
    window=window_main()
    sys.exit(app.exec_())

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页