下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

2025-07-23 16:17:24 0点赞 0收藏 0评论

*本文提及的“应用及影刀代码生成专家提示词”获取规则和方式放到文末了,自取~

直接进入本期分享主题!

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

目前知道的"飞书PDF文档"主要有3种资源类型,其对应的域名地址格式如下:

  • 飞书文件(file附件):https://*.feishu.cn/file/*

  • 飞书文档(Word类型):https://*.feishu.cn/docx/*

  • 飞书知识库(Wiki页面):https://*.feishu.cn/wiki/*

这3种类型的PDF文件都可以用今天分享的思路提取到,提取思路也同样适用于PPT文件。

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

开发这个应用,一开始是为了提取“飞书文件(file附件)”类型的PDF文件,看了下开发者模式中元素面板下的html代码,发现属于懒加载页面,

页面图片地址格式虽说不是常规的https,也不是blob格式,而是base64加密过的,但是好在获取的图片是高清的,使用“懒加载页面的常规处理方式”就能解决。

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

我使用“数据量长度固定”和“数据量长度不固定”两种方式都完美实现了。随后又想起平时遇到的其他2种资源类型,索性就一起看看

结果发现这两种资源类型所在页面获取到的图片地址,打开都是模糊缩略图,根本不适用于之前的方案,出于通用性考虑,只能另想它法了~

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

后面盯着页面屏幕反应过来,这些页面底部都有个"演示模式"啊!在这个模式下,不管什么页面,都是高清的!那我直接配合“网页截图”指令就可以获取到!

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

按这个思路,我跑通了下面这个成品应用,从获取单个页面截图到最终合并成 PDF,每一步都清晰明了:

  • 获取已打开网页,自动识别到不同资源类型飞书PDF文档

  • 自动获取文档标题,创建同名本地文件夹;

  • 获取PDF最大页数,来确定后续翻页次数;

  • 定位演示模式按钮并进入该模式;

  • For循环:鼠标翻页逐个截图,并保存到本地文件夹中

  • 最后所有图片自动合并成完整PDF

下面来看更具体的应用案例介绍~

一、应用/功能介绍

这个应用主要就是帮你把下载受限的飞书 PDF 文档搞下来,而且是高清的。不管是纯 PDF 文件还是内嵌于飞书文档中的 PDF,都能搞定。

目前支持的具体功能点:

  • 支持自动判断传入的文档资源类型,并采用对应Xpath表达式

  • 支持自动获取文档标题,移除非法字符,创建本地同名文件夹

  • 支持智能识别PDF总页数,精准控制翻页

  • 基于飞书演示模式获取高清图片,支持按页面出现顺序命名

  • 支持按图片命名作为排序依据,将图片合并为完整PDF文件

二、效果视频演示

下面是应用实际运行演示(所用案例一共31个页面,运行耗时约2分钟)

上方演示视频中飞书PDF文档案例的最终文件,高清大图,且没有任何缺失

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

三、全流程指令代码

1. 主流程/流程参数配置

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

2. Python模块包

这次代码生成也是用到了上篇分享提到的"影刀RPA代码生成专家提示词",简单跟着AI的引导明确需求,一次就跑通了,爽!!

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

⚠️这里代码会提示你安装pillow这个图像处理库,但是你去安装时会发现,界面虽然显示安装成功但是你在"模块管理"窗口下是看不到的,

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

这是因为在影刀RPA中已经预装了这个库,不需要额外安装即可使用(“魔法指令告诉我的😃”)

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

3. Python代码

(1)clean_feishu_title_illegal_chars.py

import re

from xbot import print

def combined_feishu_title_cleaner(original_title: str) -> str:

    """

    清理飞书标题中的非法字符和空格,确保标题符合飞书文档命名规范。

    Args:

        original_title (str): 原始标题,例如: "飞书 文档: 我的<项目>?"

    Returns:

        str: 清理后的标题,例如: "飞书文档我的项目"

    Raises:

        ValueError: 如果输入不是字符串或清理后的标题为空

    """

    # 检查输入有效性

    if not isinstance(original_title, str):

        raise ValueError("输入的标题必须是字符串类型")

    if not original_title.strip():

        raise ValueError("输入的标题不能为空")

    # 使用正则表达式同时移除非法字符和空格

    illegal_pattern = r'[/:*?"<>|/:*?"<>|s]'

    cleaned_title = re.sub(illegal_pattern, '', original_title)

    # 删除 .pdf 后缀(如果存在)

    if cleaned_title.lower().endswith('.pdf'):

        cleaned_title = cleaned_title[:-4]  # 移除最后4个字符

    # 检查清理后的标题是否为空

    if not cleaned_title:

        raise ValueError("清理后的标题为空,请检查原始标题内容")

    return cleaned_title

def main(args):

    """影刀RPA流程调用入口"""

    try:

        # 从流程变量获取原始标题

        original_title = args.get("original_title", "")

        # 执行标题清理

        cleaned_title = combined_feishu_title_cleaner(original_title)

        # 输出结果到流程变量

        return {"cleaned_title": cleaned_title}

    except Exception as e:

        print(f"标题清理失败: {str(e)}")

        return {"error": str(e)}

(2)merge_images_to_pdf.py

# 使用此指令前,请确保安装必要的Python库: 

# pip install Pillow

from PIL import Image

import os

import re

from typing import *

try:

    from xbot.app.logging import trace as print

except:

    from xbot import print

def merge_images_to_pdf(folder_path: str, output_pdf_path: str) -> bool:

    """

    title: 图片合并为PDF

    description: 将指定文件夹中的所有图片按文件名数字顺序合并成一个PDF文件,每张图片占一页

    inputs: 

        - folder_path (str): 包含图片的文件夹路径,eg: "C:/images"

        - output_pdf_path (str): 输出PDF文件的保存路径,eg: "C:/output.pdf"

    outputs: 

        - success (bool): 处理成功返回True,失败返回False,eg: True

    """

    # 1. 定义支持的图片格式

    supported_formats = {'.jpg', '.jpeg', '.png', '.webp'}

    # 2. 获取文件夹中所有图片文件

    image_files = []

    for filename in os.listdir(folder_path):

        file_ext = os.path.splitext(filename)[1].lower()

        if file_ext in supported_formats:

            image_files.append(filename)

    # 3. 按文件名中的数字进行排序

    def extract_number(filename):

        numbers = re.findall(r'd+', filename)

        return int(numbers[0]) if numbers else 0

    image_files.sort(key=extract_number)

    # 4. 如果没有找到图片文件,返回False

    if not image_files:

        print("文件夹中没有找到支持的图片文件")

        return False

    # 5. 打开所有图片并转换为RGB格式

    images = []

    for filename in image_files:

        file_path = os.path.join(folder_path, filename)

        try:

            img = Image.open(file_path)

            # 转换为RGB格式(PDF需要RGB格式)

            if img.mode != 'RGB':

                img = img.convert('RGB')

            images.append(img)

            print(f"已加载图片: {filename}")

        except Exception as e:

            print(f"无法打开图片 {filename}: {e}")

            continue

    # 6. 将图片保存为PDF文件

    if images:

        try:

            # 第一张图片作为主图片,其余作为附加页面

            images[0].save(

                output_pdf_path,

                format='PDF',

                save_all=True,

                append_images=images[1:] if len(images) > 1 else []

            )

            print(f"PDF文件已成功保存到: {output_pdf_path}")

            print(f"共处理了 {len(images)} 张图片")

            return True

        except Exception as e:

            print(f"保存PDF文件时出错: {e}")

            return False

    else:

        print("没有成功加载任何图片")

        return False

四、如何获取应用

1. 使用须知

(1)你的飞书账号至少应拥有对该PDF文档的"基础访问阅读"权限

(2)该应用基于影刀RPA开发,请确保电脑端已正确下载影刀RPA应用并登录账号;

*作者实测使用的是Win 11系统

*影刀RPA官网:https://www.yingdao.com/product/

(3)该应用为基于Edge浏览器开发的网页自动化应用,在正式运行应用前,请先确保Edge浏览器打开该飞书网页,并且定位到第1页的位置(*默认第1页);

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

2. 获取应用

3. 开始运行

(1)找到刚获取的应用,点击"运行";

(2)在弹出的对话框中输入飞书文档链接,回车或点击"确定" ;

(3)静默等待程序运行完成,中途不要干预;

(4)在飞书PDF文档标题同名的桌面文件夹查看所有图片文件及合并后的PDF文档;

下载「下载受限的飞书PDF文档」,通解3种不同资源类型的飞书域名

以上。对该应用有任何疑问的铁铁,可以评论区留言交流哈,我们下期分享见~

-END-

  • 爱练字的96年ISTJ型互联网人/信息整合怪/工具人/影刀高级认证工程师。

  • 专注分享:RPA&AI自动化场景提效方案、效率软件安利、实用技能。"所有的生产要素都可以被构建,只有认知是壁垒",欢迎関注 @掌心向暖

推荐阅读:

  • 掌心向暖:影刀RPA | Win端没有"上传文件"指令? 多少有点离谱了刀刀

  • 那些拥有上千浏览器书签/收藏夹的电脑用户,是怎么管理书签的?

  • 不会编程的我开发了一款近900行指令的自动化RPA应用,完美解决98%以上复制受限的飞书文档!!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松