You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Aspose-PDF-Cloud-Python脚本以成功下载处理后的PDF文件

修复Aspose-PDF-Cloud-Python脚本的TypeError问题

问题描述

运行PDF处理脚本时触发错误:TypeError: a bytes-like object is required, not 'str',错误出现在下载文件后写入本地的步骤。

错误原因

pdf_api.download_file()默认返回字符串格式的响应内容,而写入二进制文件(wb模式)需要字节流对象,类型不匹配导致报错。

修复后的完整代码

import os
from asposepdfcloud import PdfApi, models
from asposepdfcloud.api_client import ApiClient

# 替换为你的Aspose Cloud密钥和SID
app_key = 'app_key personal'
app_sid = 'app_sid personal'

# 初始化PdfApi客户端
pdf_api_client = ApiClient(app_key=app_key, app_sid=app_sid)
pdf_api = PdfApi(pdf_api_client)

def process_pdf_files_in_folder(input_folder, output_folder):
    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)

    # 遍历输入文件夹中的所有PDF文件
    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_file_path = os.path.join(input_folder, filename)
            remote_name = filename
            copied_file = f'processed_{filename}'
            
            # 上传PDF到云端存储
            pdf_api.upload_file(remote_name, input_file_path)

            # 复制云端文件
            pdf_api.copy_file(remote_name, copied_file)

            # 替换文本内容
            text_replace = models.TextReplace(old_value='Watermark instead', new_value='', regex=True)
            text_replace_list = models.TextReplaceListRequest(text_replaces=[text_replace])
            pdf_api.post_document_text_replace(copied_file, text_replace_list)
            
            # 下载处理后的文件到本地
            output_file_path = os.path.join(output_folder, copied_file)
            
            # 获取原始二进制响应对象(避免默认转成字符串)
            response = pdf_api.download_file(copied_file, _preload_content=False)
            
            # 写入二进制文件
            with open(output_file_path, 'wb') as file:
                file.write(response.data)

            print(f'处理完成并保存: {output_file_path}')

# 指定输入输出文件夹路径
process_pdf_files_in_folder(r'D:\input', r'D:\output')

关键修改点

  1. 调用download_file时添加_preload_content=False参数,获取原始的HTTP响应对象,而非自动解析的字符串
  2. 写入文件时使用response.data属性,该属性存储的是二进制字节流,符合wb模式的写入要求

内容的提问来源于stack exchange,提问作者Infinite code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:38:18