如何修复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')
关键修改点
- 调用
download_file时添加_preload_content=False参数,获取原始的HTTP响应对象,而非自动解析的字符串 - 写入文件时使用
response.data属性,该属性存储的是二进制字节流,符合wb模式的写入要求
内容的提问来源于stack exchange,提问作者Infinite code
相关产品推荐
相关产品推荐

