乐于分享
好东西不私藏

《告别手动添加水印!用Python打造PDF批量水印工具,一键处理,效率飙升,爽到没朋友!》

《告别手动添加水印!用Python打造PDF批量水印工具,一键处理,效率飙升,爽到没朋友!》

“带你横跨办公自动化的数据江海”

@摸鱼

前言

关于摸鱼

ABOUT MOYU

闻道有先后,术业有专攻。

各位大佬朋友们好!

~我依旧是你们的老朋友摸鱼~

在职场摸爬滚打的这十多年里,我用Python悄悄干了不少“正事”——不知不觉攒下了一整套办公自动化的实用项目技巧。去年10月初创立了公众号 「码海听潮」 ,初衷很简单:把重复的劳动交给代码,把摸鱼的时间留给生活。

目前已经吭哧吭哧更新了140多篇原创文章,每一篇都是实操干货,不讲虚的,只聊怎么用代码真正解放双手,帮大家早点下班、准点摸鱼

好了,多了不说,少了不唠,今天给大佬们分享一款本人原创的【PDF批量水印添加工具】这款工具支持批量或单个PDF文件添加水印,文本+Logo双重水印,位置、大小、透明度、旋转角度随意调,实时预览,处理效率杠杠的!特别适合文档版权保护、品牌宣传等场景,省时省力,谁用谁知道!

《该办公工具成品展示:》

《该办公工具的演示视频:》

已关注
关注
重播 分享

《该办公工具核心功能亮点:》

01

 亮点1:批量处理,效率倍增

        • 支持递归遍历文件夹及其所有子文件夹,一次性处理成百上千个PDF文件

        • 相比手动逐个打开PDF添加水印,效率提升数十倍甚至上百倍

        02

         亮点2:双重水印加持🎨

            • 文本水印:自定义文字内容、字体、大小、颜色

            • 图片Logo:支持PNG、JPG等常见图片格式

            • 两者可同时使用,也可单独使用,灵活配置

            03

            亮点3:所见即所得的实时预览⚙️

            • 右侧预览区实时显示水印效果

            • 所有参数调整即时反馈,无需反复试错

            • 精确模拟A4页面效果

            《该办公工具代码展示:》

            下面,我就用python代码让各位大佬见识一下,什么叫"传统文化"遇上"赛博效率"

            import sysfrom PyQt6.QtWidgets import (    QApplicationQMainWindowQWidgetQLabelQPushButtonQLineEdit,    QComboBoxQSpinBoxQSliderQProgressBarQFileDialog,    QHBoxLayoutQVBoxLayoutQSplitterQScrollAreaQMessageBox,    QGroupBoxQFormLayoutQSizePolicyQColorDialog)from PyQt6.QtGui import QPixmap, QPainter, QFontDatabase, QFont, QFontMetrics, QColorfrom PyQt6.QtCore import Qt, QThread, pyqtSignalclass PDFWatermarkerApp(QMainWindow):    def __init__(self):        super().__init__()        # 设置窗口标题        self.setWindowTitle("PDF批量添加文本和图片水印(欢迎关注微信公众号:码海听潮)")        self.resize(1000700)        self.folder_path     = ''        self.logo_path       = ''        self.font_cache      = {}        self.text_size_pct   = 100  # 文字大小百分比        self.logo_size_pct   = 100  # Logo 大小百分比        self.text_color      = QColor(000)  # 默认文字颜色:黑色        self.worker          = None        self._init_ui()        self._connect_signals()        self.update_preview()        self.setAcceptDrops(True)    def _init_ui(self):        # ---- 全局容器 & 样式 ----        central = QWidget(self)        central.setStyleSheet("background-color: #f7f9fb; font-family: 'Microsoft YaHei';")        self.setCentralWidget(central)        main_layout = QVBoxLayout(central)        main_layout.setContentsMargins(16161616)        main_layout.setSpacing(16)        # ---- 分割器 ----        splitter = QSplitter(Qt.Orientation.Horizontal)        splitter.setHandleWidth(4)        splitter.setStyleSheet("QSplitter::handle { background-color: #d9d9d9; }")        main_layout.addWidget(splitter)        # ---- 样式定义 ----        group_style = """        QGroupBox {            font: 600 16px 'Microsoft YaHei';            margin-top: 26px;            border: 1px solid #a0aec0;            border-radius: 10px;            background-color: #e6f7ff;            padding: 10px;        }        QGroupBox::title {            subcontrol-origin: margin;            subcontrol-position: top left;            padding: 0 10px;            color: #1f1f1f;            background-color: #e6f7ff;            font-weight: bold;        }        """        btn_style = """        QPushButton {            background-color: #7cb8e6;            color: white;            border: none;            border-radius: 6px;            font: bold 15px 'Microsoft YaHei';            padding: 6px 14px;        }        QPushButton:hover {            background-color: #40a9ff;        }        QPushButton:pressed {            background-color: #096dd9;        }        """        slider_style = """        QSlider::groove:horizontal {            height: 8px;            background: #e0e0e0;            border-radius: 4px;        }        QSlider::handle:horizontal {            background: qlineargradient(                spread:pad, x1:0, y1:0, x2:1, y2:0,                stop:0 #40a9ff, stop:1 #1890ff            );            width: 16px;            margin: -4px 0;            border-radius: 8px;        }        """        progress_style = """        QProgressBar {            border: 1px solid #ccc; border-radius: 6px;            background: #f5f5f5; height: 20px;        }        QProgressBar::chunk {            background-color: #1890ff; border-radius: 6px;        }        """        # ---- 左侧参数面板 ----        panel = QWidget()        panel.setStyleSheet(            "background-color: #e6f7ff;"            "border: 1px solid #d9d9d9;"            "border-radius: 8px;"        )        panel_layout = QVBoxLayout(panel)        panel_layout.setContentsMargins(14221414)        panel_layout.setSpacing(14)        # 1. 选择 PDF 文件夹        gb_folder = QGroupBox("📂 选择文件夹")        gb_folder.setStyleSheet(group_style)        form_folder = QHBoxLayout(gb_folder)        form_folder.setContentsMargins(106106)        self.btn_folder = QPushButton("🔍 浏览文件夹")        self.btn_folder.setFixedHeight(32)        self.btn_folder.setStyleSheet(btn_style)        self.lbl_folder = QLabel("⚪未选择文件夹")        self.lbl_folder.setStyleSheet("color: #333333;")        form_folder.addWidget(self.btn_folder)        form_folder.addSpacing(8)        form_folder.addWidget(self.lbl_folder)        panel_layout.addWidget(gb_folder)        # 📝 文本与 Logo 设置分组        gb_text_logo = QGroupBox("📝 文本与Logo ")        gb_text_logo.setStyleSheet(group_style)        layout_text_logo = QVBoxLayout(gb_text_logo)        layout_text_logo.setContentsMargins(106106)        # 🔤 文本输入        hlayout_text = QHBoxLayout()        self.edit_text = QLineEdit("码海听潮")        self.edit_text.setFixedHeight(30)        self.edit_text.setStyleSheet(            "padding: 4px; border: 1px solid #d9d9d9; border-radius: 4px;"        )        hlayout_text.addWidget(QLabel("🔤 文本"))        hlayout_text.addWidget(self.edit_text)        layout_text_logo.addLayout(hlayout_text)        # 🏷️ 字体和 Logo        hlayout_font_logo = QHBoxLayout()        # 字体选择        hlayout_font_logo.addWidget(QLabel("🖋️ 字体"))        self.combo_font = QComboBox()        self.combo_font.addItems(["微软雅黑""宋体""黑体""楷体""仿宋""Arial""Times New Roman""Courier New"])        self.combo_font.setFixedHeight(30)        self.combo_font.setStyleSheet(            "border:1px solid #d9d9d9; border-radius:4px; padding:4px;"        )        hlayout_font_logo.addWidget(self.combo_font)        # Logo 选择按钮        hlayout_font_logo.addStretch()        self.btn_logo = QPushButton("🖼️ 选择Logo图片")        self.btn_logo.setFixedHeight(32)        self.btn_logo.setStyleSheet(btn_style)        hlayout_font_logo.addWidget(self.btn_logo)        layout_text_logo.addLayout(hlayout_font_logo)        # 添加到主布局        panel_layout.addWidget(gb_text_logo)        # 💬 水印样式设置分组        gb_style = QGroupBox("💬 水印样式")        gb_style.setStyleSheet(group_style)        style_layout = QVBoxLayout(gb_style)        style_layout.setContentsMargins(106106)        # 文字大小滑块        hlayout_size = QHBoxLayout()        label_size = QLabel("🖱️ 文字大小")        self.slider_text_size = QSlider(Qt.Orientation.Horizontal)        self.slider_text_size.setRange(10200)        self.slider_text_size.setValue(self.text_size_pct)        hlayout_size.addWidget(label_size)        hlayout_size.addWidget(self.slider_text_size)        style_layout.addLayout(hlayout_size)        # 文字颜色选择器        hlayout_color = QHBoxLayout()        self.btn_text_color = QPushButton("🎨 文字颜色")        self.lbl_color_preview = QLabel()        self.lbl_color_preview.setFixedSize(2424)        self.lbl_color_preview.setStyleSheet(f"background-color: {self.text_color.name()};")        hlayout_color.addWidget(self.btn_text_color)        hlayout_color.addWidget(self.lbl_color_preview)        style_layout.addLayout(hlayout_color)        # Logo 大小滑块        hlayout_logo = QHBoxLayout()        label_logo_size = QLabel("🖱️ Logo 大小")        self.slider_logo_size = QSlider(Qt.Orientation.Horizontal)        self.slider_logo_size.setRange(10200)        self.slider_logo_size.setValue(self.logo_size_pct)        hlayout_logo.addWidget(label_logo_size)        hlayout_logo.addWidget(self.slider_logo_size)        style_layout.addLayout(hlayout_logo)        # 透明度滑块        hlayout_opacity = QHBoxLayout()        label_opacity = QLabel("🌫️ 透明度")        self.slider_alpha = QSlider(Qt.Orientation.Horizontal)        self.slider_alpha.setRange(0100)        self.slider_alpha.setValue(20)        self.slider_alpha.setStyleSheet(slider_style)        hlayout_opacity.addWidget(label_opacity)        hlayout_opacity.addWidget(self.slider_alpha)        style_layout.addLayout(hlayout_opacity)        # 添加到主面板布局        panel_layout.addWidget(gb_style)        # 📐 布局与排列设置 分组        gb_layout = QGroupBox("📐 布局与排列")        gb_layout.setStyleSheet(group_style)        layout_all = QVBoxLayout(gb_layout)        layout_all.setContentsMargins(106106)        # 🔢 水印数量        layout_cnt = QHBoxLayout()        self.spin_h = QSpinBox();        self.spin_h.setRange(110);        self.spin_h.setValue(1);        self.spin_h.setFixedWidth(60)        self.spin_v = QSpinBox();        self.spin_v.setRange(110);        self.spin_v.setValue(1);        self.spin_v.setFixedWidth(60)        layout_cnt.addWidget(QLabel("↔️ 横行数量"));        layout_cnt.addWidget(self.spin_h)        layout_cnt.addSpacing(12)        layout_cnt.addWidget(QLabel("↕️ 纵行数量"));        layout_cnt.addWidget(self.spin_v)        layout_all.addLayout(layout_cnt)        # 🚩 水印位置        layout_pos = QFormLayout()        self.combo_text_pos = QComboBox();        self.combo_text_pos.addItems(["中心""左上""右上""左下""右下"])        self.combo_logo_pos = QComboBox();        self.combo_logo_pos.addItems(["中心""左上""右上""左下""右下"])        self.combo_text_pos.setFixedHeight(25);        self.combo_logo_pos.setFixedHeight(25)        layout_pos.addRow("📝 文本位置"self.combo_text_pos)        layout_pos.addRow("📊 Logo 位置"self.combo_logo_pos)        layout_all.addLayout(layout_pos)        # 🔄 旋转角度        layout_ang = QHBoxLayout()        self.spin_angle = QSpinBox();        self.spin_angle.setRange(-9090);        self.spin_angle.setValue(20);        self.spin_angle.setFixedWidth(100)        layout_ang.addWidget(QLabel("🔺 角度 (°):"))        layout_ang.addWidget(self.spin_angle)        layout_all.addLayout(layout_ang)        # 添加到主布局        panel_layout.addWidget(gb_layout)        # 操作按钮 & 进度条        self.btn_start = QPushButton("▶️ 开始添加");         self.btn_start.setFixedHeight(34);         self.btn_start.setStyleSheet(btn_style)        self.btn_clear = QPushButton("🔙 重置设置");             self.btn_clear.setFixedHeight(34);         self.btn_clear.setStyleSheet(btn_style)        self.progress  = QProgressBar();                      self.progress.setFixedHeight(14);         self.progress.setStyleSheet(progress_style)        btn_layout = QHBoxLayout()        btn_layout.setSpacing(8)        btn_layout.addWidget(self.btn_clear)        btn_layout.addWidget(self.btn_start)        panel_layout.addLayout(btn_layout)        panel_layout.addWidget(self.progress)        panel_layout.addStretch()        splitter.addWidget(panel)        # ---- 右侧预览面板 ----        preview_panel = QWidget()        preview_panel.setStyleSheet(            "background-color: #ffffff;"            "border: 1px solid #d9d9d9;"            "border-radius: 8px;"        )        layout_preview = QVBoxLayout(preview_panel)        layout_preview.setContentsMargins(14141414)        layout_preview.setSpacing(14)        lbl_preview = QLabel("👀 实时预览区")        lbl_preview.setAlignment(Qt.AlignmentFlag.AlignCenter)        lbl_preview.setStyleSheet("font: bold 18px 'Microsoft YaHei'; color: #096dd9;")        layout_preview.addWidget(lbl_preview)        self.scroll_area = QScrollArea()        self.scroll_area.setWidgetResizable(True)        self.preview_label = QLabel()        self.preview_label.setAlignment(Qt.AlignmentFlag.AlignCenter)        self.preview_label.setSizePolicy(QSizePolicy.Policy.ExpandingQSizePolicy.Policy.Expanding)        self.preview_label.setMinimumSize(200200)        self.scroll_area.setWidget(self.preview_label)        layout_preview.addWidget(self.scroll_area)        splitter.addWidget(preview_panel)        # ---- 左右面板比例 ----        splitter.setStretchFactor(02)        splitter.setStretchFactor(18)    def _connect_signals(self):        self.btn_folder.clicked.connect(self.browse_folder)        self.btn_logo.clicked.connect(self.choose_logo)        self.btn_start.clicked.connect(self.start_process)        self.btn_clear.clicked.connect(self.clear_settings)        self.btn_text_color.clicked.connect(self.choose_text_color)        widgets = [self.edit_text, self.combo_font, self.slider_alpha,                   self.spin_h, self.spin_v, self.combo_text_pos,                   self.combo_logo_pos, self.spin_angle,                   self.slider_text_size, self.slider_logo_size]        for w in widgets:            if hasattr(w, 'textChanged'):                w.textChanged.connect(self.update_preview)            if hasattr(w, 'currentIndexChanged'):                w.currentIndexChanged.connect(self.update_preview)            if hasattr(w, 'valueChanged'):                w.valueChanged.connect(self.update_preview)    def browse_folder(self):        folder = QFileDialog.getExistingDirectory(self"📂 选择文件夹")        if folder:            self.folder_path = folder            self.lbl_folder.setText(folder)    def choose_text_color(self):        color = QColorDialog.getColor(initial=self.text_color, parent=self, title="🎨 文字颜色")        if color.isValid():            self.text_color = color            self.lbl_color_preview.setStyleSheet(f"background-color: {color.name()};")            self.update_preview()    def choose_logo(self):        path, _ = QFileDialog.getOpenFileName(self"🖼️ 选择Logo图片", filter="Images (*.png *.jpg *.jpeg)")        if path:            self.logo_path = path            self.update_preview()    def clear_settings(self):        self.lbl_folder.setText('未选择文件夹')        self.edit_text.setText('码海听潮')        self.slider_alpha.setValue(20)        self.spin_h.setValue(1)        self.spin_v.setValue(1)        self.combo_text_pos.setCurrentIndex(0)        self.combo_logo_pos.setCurrentIndex(0)        self.spin_angle.setValue(30)        self.progress.setValue(0)        self.preview_label.clear()        if hasattr(self, 'dropped_file'):            self.dropped_file = None    def update_preview(self):        # 获取预览框尺寸        w = self.preview_label.width()        h = self.preview_label.height()        if w <= 0 or h <= 0:            return        # 创建预览画布        pixmap = QPixmap(w, h)        pixmap.fill(Qt.GlobalColor.white)        painter = QPainter(pixmap)        painter.setOpacity(self.slider_alpha.value() / 100)        painter.setPen(self.text_color)        # 绘制示例文本水印        text = self.edit_text.text()        font = QFont("Microsoft YaHei"20)        painter.setFont(font)        painter.drawText(w//2 - 50, h//2, text)        # 如果有Logo,绘制示例Logo        if self.logo_path:            logo = QPixmap(self.logo_path)            if not logo.isNull():                logo = logo.scaled(8080Qt.AspectRatioMode.KeepAspectRatio                                  Qt.TransformationMode.SmoothTransformation)                painter.drawPixmap(w - 10020, logo)        painter.end()        self.preview_label.setPixmap(pixmap)    def start_process(self):        QMessageBox.information(self"提示""开始处理PDF水印...")    def dragEnterEvent(self, event):        if event.mimeData().hasUrls():            event.acceptProposedAction()    def dropEvent(self, event):        url = event.mimeData().urls()[0]        path = url.toLocalFile()        if os.path.isdir(path):            self.folder_path = path            self.lbl_folder.setText(path)        elif os.path.isfile(path) and path.lower().endswith('.pdf'):            self.dropped_file = path            self.folder_path = os.path.dirname(path)            self.lbl_folder.setText(os.path.basename(path))        self.progress.setValue(0)        self.preview_label.clear()if __name__ == '__main__':    app = QApplication(sys.argv)    window = PDFWatermarkerApp()    window.show()    sys.exit(app.exec()

            这款PDF批量水印添加工具,可自动完成原需手动逐页添加水印、从最初打开数百个PDF文件逐个添加水印、手动调整位置和透明度、反复预览效果、再到逐一确认输出的繁琐与崩溃,到用自动化工具实现一键批量处理、水印参数自由调节、实时预览效果、工作效率获得指数级提升,终于解放了双手和时间!

            大佬们也可以举一反三,参照上面的代码思路根据自己工作中的实际情况来具体问题具体分析,实现自己定制化的需求。

            《该办公工具的应用场景:》

              1.  企业文档版权保护

              • 公司内部机密文档、合同、协议添加"机密"、"内部资料"水印

              • 防止敏感信息外泄,明确文档归属权

              • 离职员工资料交接时批量添加公司Logo水印

              2.  品牌宣传与营销

              • 产品手册、宣传册批量添加公司Logo和品牌口号

              • 提升品牌曝光度,防止竞品盗用资料

              • 展会资料、客户提案统一品牌形象

              3.  教育培训行业

              • 课件、讲义、习题集添加"仅供内部使用"水印

              • 防止学生资料外传,保护知识产权

              • 在线课程教材批量添加机构Logo和版权声明

              4.  法律与金融行业

              • 合同草案、审计报告添加"草稿"、"审核中"水印

              • 律师函、法律文书加密防护

              • 防止文档被篡改或冒用

              5.  政府与事业单位

              • 红头文件、公告通知添加"内部文件"水印

              • 会议材料、汇报PPT转PDF后加标识

              • 档案数字化管理中的版权保护

              6.  设计院与建筑行业

              • 设计图纸、施工方案批量添加公司水印

              • 防止设计成果被他人盗用

              • 投标文件品牌标识强化

              7.  自媒体与内容创作者

              • 电子书、原创文章PDF添加个人品牌Logo

              • 防止内容被搬运、抄袭

              • 付费资料版权保护

              8.  电商与网店运营

              • 产品说明书、用户手册批量添加店铺水印

              • 防止同行盗用产品资料

              • 提升店铺专业形象

              9.  科研与学术领域

              • 论文、研究报告添加"草稿"、"审阅中"水印

              • 保护科研成果不被提前泄露

              • 学术交流资料版权声明

              10.  批量文档归档管理

              • 大量历史文档统一添加归档标识

              • 部门资料规范化管理

              • 电子档案安全防护

              一句话总结:只要是PDF文档,只要是版权保护、品牌宣传、文档管理的场景,这款工具都能大显身手!

              结语

              当Python遇见办公,牛马打工人终于笑出了猪叫声

              【职场人必看】每天早上一睁眼,想到又要面对:

              1.📊 堆积如山的Excel表格

              2.📑 机械重复的复制粘贴

              3.✍️ 永远改不完的各类文档

              4.诸如此类的更多........

              是不是连Ctrl+Alt+Delete的心都有了?

              别慌!别急,摸鱼这位“职场外挂”已经带着Python代码来拯救你了!

              另外,本篇文章的exe已上传nas私有云盘,有需要的大佬可私信摸鱼君获取!

              感谢各位大佬观看,还望各位大佬抬抬贵手一键三连,多多关注点赞转发评论,大佬们的支持才是摸鱼孜孜不倦更新原创干货的动力!

              基本 文件 流程 错误 SQL 调试
              1. 请求信息 : 2026-07-23 12:47:39 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/872363.html
              2. 运行时间 : 0.693240s [ 吞吐率:1.44req/s ] 内存消耗:4,922.30kb 文件加载:145
              3. 缓存信息 : 0 reads,0 writes
              4. 会话信息 : SESSION_ID=40edced60638e1b7d453238aaa642537
              1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
              2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
              3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
              4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
              5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
              6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
              7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
              8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
              9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
              10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
              11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
              12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
              13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
              14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
              15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
              16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
              17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
              18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
              19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
              20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
              21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
              22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
              23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
              24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
              25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
              26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
              27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
              28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
              29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
              30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
              31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
              32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
              33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
              34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
              35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
              36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
              37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
              38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
              39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
              40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
              41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
              42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
              43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
              44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
              45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
              46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
              47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
              48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
              49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
              50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
              51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
              52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
              53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
              54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
              55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
              56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
              57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
              58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
              59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
              60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
              61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
              62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
              63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
              64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
              65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
              66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
              67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
              68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
              69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
              70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
              71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
              72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
              73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
              74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
              75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
              76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
              77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
              78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
              79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
              80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
              81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
              82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
              83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
              84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
              85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
              86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
              87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
              88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
              89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
              90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
              91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
              92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
              93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
              94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
              95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
              96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
              97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
              98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
              99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
              100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
              101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
              102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
              103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
              104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
              105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
              106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
              107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
              108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
              109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
              110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
              111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
              112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
              113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
              114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
              115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
              116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
              117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
              118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
              119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
              120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
              121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
              122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
              123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
              124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
              125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
              126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
              127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
              128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
              129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
              130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
              131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
              132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
              133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
              134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
              135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
              136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
              137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
              138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
              139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
              140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
              141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
              142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
              143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
              144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
              145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
              1. CONNECT:[ UseTime:0.000601s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
              2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000791s ]
              3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.007008s ]
              4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001710s ]
              5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000663s ]
              6. SELECT * FROM `set` [ RunTime:0.009192s ]
              7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000825s ]
              8. SELECT * FROM `article` WHERE `id` = 872363 LIMIT 1 [ RunTime:0.037788s ]
              9. UPDATE `article` SET `lasttime` = 1784782059 WHERE `id` = 872363 [ RunTime:0.006259s ]
              10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.001774s ]
              11. SELECT * FROM `article` WHERE `id` < 872363 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.051900s ]
              12. SELECT * FROM `article` WHERE `id` > 872363 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.042670s ]
              13. SELECT * FROM `article` WHERE `id` < 872363 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.147995s ]
              14. SELECT * FROM `article` WHERE `id` < 872363 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.165099s ]
              15. SELECT * FROM `article` WHERE `id` < 872363 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.136737s ]
              0.695027s