首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在App Engine上的后台任务中逐页生成pdf文档

专家你好!

在App Engine上的后台任务中逐页生成pdf文档需要以下步骤:

  1. 连接到Google Cloud Platform,在App Engine中创建一个Web应用程序并获取App Key和Service URL。
  2. 使用Google Cloud Storage API中的BatchGetObjectsRequest类来获取存储桶中的所有对象。可以使用App Key和Service URL作为参数来访问存储桶。
  3. 对于每个对象,使用Google Cloud Storage API中的GetObjectRequest类来获取对象的下载URL。
  4. 将所有对象的下载URL存储到一个列表中。
  5. 对于每个下载URL,使用iText PDF库中的PdfWriter类来创建一个PDF文档,并添加相应的页面。
  6. 重复步骤5,直到所有下载URL都被处理完毕。

下面是一个Python代码示例,可以帮助您开始处理这个任务:

代码语言:python
代码运行次数:0
复制
import os
import requests
from google.cloud import storage
from google.cloud.storage.batch_get_objects import BatchGetObjectsResponse
from google.cloud.storage.object_download import ObjectDownload
from io import BytesIO
import iotextpdf
from iotextpdf import PdfReader
import iotextpdf
from iotextpdf import PdfWriter

# 连接到Google Cloud Platform
client = storage.Client()

# 获取存储桶中的所有对象
bucket_name = "my-bucket"
response = client.list_objects(bucket_name)

# 存储所有对象的下载URL
urls = []
for obj in response.get('Contents', []):
    url = obj['Key']
    urls.append(url)

# 创建PDF文档
pdf = iotextpdf.PdfReader()
pdf.add_page()

# 循环处理每个对象的下载URL
for url in urls:
    # 获取下载URL
    response = requests.get(url)
    if response.status_code != 200:
        print(f"Error: {response.status_code}")
        continue

    # 创建BytesIO对象
    buffer = BytesIO(response.content)

    # 读取PDF文档
    pdf.add_page(pdf.create_page(buffer))

    # 创建PDF文档
    doc = iotextpdf.PdfReader()
    doc.add_page()

    # 打印PDF文档
    doc.add_page(pdf.pages[0])

    # 保存PDF文档
    doc.save("output.pdf")

这个代码示例将帮助您逐页生成PDF文档。如果您有任何问题,请随时问我。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

极客智坊翻译服务升级:支持PDF翻译+批量网页翻译

Google 文档翻译问题 最近两周给极客智坊新增了 PDF 文档翻译和批量网页翻译能力,PDF 文档翻译要先支持顺序提取所有文字、链接、图片、表格,这一块还是挺复杂,因为 PDF 本身是一个侧重表现层显示而非结构标准化文档格式...,即便是强 Google/DeepL PDF 文档解析也有不尽如人意地方,比如下面红框是 Google 翻译 https://arxiv.org/pdf/2310.15987.pdf 这篇论文时候提取图片...: 而原图实际是这样: 可以看到坐标轴参数和图示说明文字都弄丢/错位了,说明提取图片时候还是有问题。...PDF 论文为例进行演示,上传成功后,可以在右侧区域看到如下提示: 点击后台任务即可进入后台任务列表看到这个翻译任务: 文档翻译时间不好预测,对于大文件来说可能非常耗时,已经不再适合通过聊天对话返回结果...): 翻译成功后,点击下载按钮即可下载翻译结果: 系统会将每个网页翻译结果保存到单独 MD 文件,文件名就是网页标题,然后打包成一个 zip 文件提供下载: 这对一些需要翻译某个主题系列文档场景非常友好

39040
  • 2011年12月13日 Go生态洞察:从零到Go,在谷歌首页24小时飞跃

    2011年12月13日 Go生态洞察:从零到Go,在谷歌首页24小时飞跃 摘要 搜索词条:Go语言, Google Doodle, 开发速度, App Engine, 图像处理 猫头虎博主报道!...今天我们来谈谈Go语言在现实世界一个精彩案例:如何在短短24小时内,使用Go编写程序,并成功部署在数百万用户访问谷歌首页。这不仅是对Go语言性能证明,更是对开发速度极致挑战。...选择App Engine和Go运行时 面对即刻扩展和高可用性需求,显而易见平台选择是Google App Engine。图像处理任务是CPU密集型,因此性能成为决定因素。...学习资源 Reinaldo利用App EngineHello World Go示例、Go包文档和展示Draw包博客文章作为主要学习资源。...总结 Reinaldo经历展示了Go语言直观、简洁和清晰语法。Go优秀文档和从源代码生成文档使学习变得快速和深入。

    9210

    零代码编程:用Kimichat从PDF文件批量提取图片

    一个PDF文件,有很多图片,想批量提取出来,可以借助kimi智能助手。...在借助kimi智能助手中输入提示词: 你是一个Python编程专家,要完成一个网页爬取Python脚本任务,具体步骤如下: 打开文件夹:E:\6451 读取里面的PDF文件; 将PDF文件里面的图片都保存到...E:\6451 注意:图片体积较大,占用内存高,要将PDF文件图片分批次提取,而不是一次性提取所有图片 kim生成Python源代码: import fitz # PyMuPDF import os...if not os.path.exists(folder_path): print(f"The folder {folder_path} does not exist.") else: # 读取文件夹所有...(folder_path, filename) doc = fitz.open(pdf_path) # 逐页提取图片 for page_number in range(len(doc)): page =

    12110

    MetaGPT( The Multi-Agent Framework):颠覆AI开发革命性多智能体元编程框架

    "MetaGPT( The Multi-Agent Framework):颠覆AI开发革命性多智能体元编程框架"一个多智能体元编程框架,给定一行需求,它可以返回产品文档、架构设计、任务列表和代码。...这个项目提供了一种创新方式来管理和执行项目,将需求转化为具体文档和任务列表,使项目管理变得高效而智能。...data & api Design图片生成一个分析和设计示例成本约为0.2美元(在GPT-4 API费用),而生成一个完整项目的成本约为2.0美元。...--user将Mermaid图表转换为SVG、PNG和PDF格式。...这个项目的使命是让每个人都能使用ML编译技术在每个人设备开发、优化和部署人工智能模型。

    1.1K20

    原来最好用并不是全网称赞谷歌NotebookLM...

    又向智谱提出相同问题,也依旧没有如谷歌一样追溯定位到书中。文心一言:上传形式更加多样,Word/PDF/TXT/Excel/PPT等格式文件,或将链接粘贴到输入框。...点击来源文件可立即定位到书本。小结通过以上国内热门AI工具实测,在多功能性它们目前无法超越谷歌NotebookLM,也没有谷歌将文件转成AI播客功能特征。...但这并不代表谷歌就是完美无缺,在测试过程,我们发现连谷歌NotebookLM都无法拥有的一些功能:逐页解析、中英全文互译,脑图自动生成。这些功能都来自阿里通义智文。...1.PDF文件大小受限,小编想上传与谷歌同样270多页电子书籍,但是被告知无法生成。2.小编选取较短论文PDF转为播客,播客内容十分浅显,没有说到核心知识点。...如果小编想阅读一本电子书籍,会先使用通义智文逐页分析,让其生成思维导图,让自己慢慢吃透这本书;如果想提升英语能力,也会使用通义智文进行书本翻译;另外选择谷歌学习指导为我提供学习这本书思路,并利用谷歌进行随机提问

    16810

    React Native 从诞生到现在

    以此让 Native 开发也能具备 React 种种优势, UI 可预测性、Flexbox 布局等。...但无法满足提升开发效率初衷,一点变动仍要重新编译,另一方面,这一套与 Web React 并不互通,无法利用 Web 生态建立在 React 之上利器(Relay) Scripting native...:宣布 React Native 支持 Android 了 2015 年 1 月 React.js Conf ,这个内部项目首次公布,并在 5 月 F8 Conference 正式开源 最初只支持...个团队定期召开月会,持续了半年 React Native Performance in Marketplace:介绍 Facebook 在其 React Native 主应用(Marketplace)性能实践...性能仍然是一个重要方向,动画、List View 等重要更新都涉及性能优化 另外,还开始了编译时性能优化探索,Prepack,期望大幅削减 React Native core 初始化耗时: We

    1.1K20

    PyPDF2使用「建议收藏」

    PDF合成包含链接和按钮,表单字段,音频,视频和业务逻辑 在这篇文章,我们将学习如何做一些pdf操作: 从PDF中提取文字 旋转pdf页 合并pdf 分割pdfpdf添加水印...使用简单python脚本 1、安装 我们将使用第三方模块 PyPDF2 ---- PyPDF2是作为PDF工具包构建python库,它能够: 提取文档信息(标题,作者,…) 按页拆分文档 逐页合并文档...裁剪页面 合并多个页面到一个页 对pdf文档进行加密解密 等等 安装PyPDF2,在命令行下执行命令: pip install PyPDF2 ---- 注意,这个模块名字对大小写是敏感,所以,确保...,以写方式,将我们新生成pdf写入。...对于传递页面对象,我们使用mergePage()函数传递水印,这将在传递页面对象覆盖水印。

    1K40

    New Windows 10 SDK - Multi-instance UWP apps

    系统推荐实例,如果有,我们可以重定向到这个实例; 多实例间唯一性标识 key 生成方式,我们可以根据 activatedArgs 来自定义,在默认示例代码,采用了随机数判断单双数方式; FindOrRegisterInstanceForKey...public bool IsCurrentInstance { get; } 后台任务和多实例 关于后台任务多实例,官方有以下说明: 进程外后台任务支持多实例,通常,每个新触发结果会独立在一个后台任务实例...这也是多实例应用典型特点。然而,多实例应用可能会选择在每个实例基础注册一个不同后台任务名。...字段,那么他扩展不需要再声明 SupportsMultipleInstances; 如果你把 SupportsMultipleInstances 添加到除后台任务,应用服务之外任何其他扩展,...来把多个后台任务分组到同一个宿主, 这和多实例是冲突,每个活动都会出现在单独宿主

    1K90

    wkhtmltopdf入门

    更多高级选项,请参考​​wkhtmltopdf​​官方文档。常见问题字体缺失在某些情况下,转换后PDF可能会出现字体缺失问题。这是因为​​wkhtmltopdf​​默认只包含一些基本字体。...本文简要介绍了​​wkhtmltopdf​​基本用法和常见问题,希望对你有所帮助。实际应用场景一种常见应用场景是,将网页内容转换为PDF格式后,发送给用户作为报告或文档。...希望这个示例代码能帮助你理解如何在实际应用场景中使用​​wkhtmltopdf​​来将网页内容转换为PDF格式。...这意味着某些复杂网页可能无法正确渲染,并且在生成 PDF 可能会丢失一些信息。资源加载可能不稳定: wkhtmltopdf 在生成 PDF 时需要加载网页各种资源, CSS、图片、字体等。...但由于网络连接不稳定或者访问资源权限问题,可能会导致资源加载失败,最终生成 PDF 可能缺失相关内容。

    1.3K20

    利用 Python 将 PDF 文档转为语音音频

    PDF转文本 肯定需要先读取 PDF 文字,再利用 pyttsx3 转语音 Python 操作 PDF 工具库主要是 PyPDF2,但发现编码实在有点繁琐 我就换了另一个库 pdfplumber...,它与 PyPDF2 语法类似,用起来还算流畅 pdfplumber 可以处理 PDF 包括文本、表格、格式在内各种信息,小而强大 # 读取PDF文档 pdf = pdfplumber.open("价值...文本转语音 接下来开始将第 4 页文本转化为音频 import pyttsx3 # 初始化来获取语音引擎 engine = pyttsx3.init() # 去掉文本换行符 text = text.replace...做实验,代码执行后,电脑会直接朗读 最后,将生成音频保存为 mp3 格式 # 保存音频到本地,格式为mp3 engine.save_to_file(text, 'test.mp3') engine.runAndWait...('volume',0.8) 最后听下生成语音是什么样

    1.6K10

    FastAPI 异步后台任务阻塞其他请求如何处理?

    1写在前面 工作遇到,有大佬做了解答,简单整理 阻塞主要原因是 网络IO 密集型和 CPU 密集型是两个不同概念, ASGI 更多是面向 网络/IO 密集型非阻塞处理,不适用 CPU 密集型...并且因为 对应后台任务某一环节是同步(即不等待某些 IO或者是网络请求,而是进行计算)只要它正在运行,它就会阻塞事件循环。...解决这个问题几种方法: 使用更多工人(例如 uvicorn main:app --workers 4 )。这将允许最多 4 个 后台任务 并行。...然后 starlette 将在单独线程运行它。 使用 fastapi.concurrency.run_in_threadpool ,这也将在单独线程运行它。...例如使用 concurrent.futures 使用更重东西,芹菜。(也在 此处 fastapi 文档中提到)。

    1.2K10

    Android Studio Arctic Fox (2020.3.1) 稳定版正式发布

    借助 Compose Preview,您可以为 Compose UI 多个组件创建预览,以便在多个维度 (主题、屏幕和字号大小等) 即时查看您修改带来变化。...您也可以观看 视频 了解不容错过更新亮点。 设计 使用 @Preview 注释生成 Compose 代码预览,并对多个组件不同配置 (例如不同设备或主题) 进行可视化。...请注意,此功能目前可用于和 Wear OS 2 配套设备配对,对 Wear OS 3 支持将在不久后推出。请阅读 官方文档 了解详情。...设备使用 WorkManager 库 2.5.0 或更高版本时,您可以使用全新后台任务检查器 (Background Task Inspector) 来可视化、监控和调试应用后台任务处理器。...从菜单栏依次选择 **View (视图) > Tool Windows (工具窗口) > App Inspection (应用检查)**,即可访问此工具。请阅读 官方文档 了解详情。

    1.7K20

    在VNPY2进行CTA批量回测,支持Json和Excel格式导入策略

    之前VNPY 1版本,我个人代码很多是直接在VNPY库代码直接修改或者增加。每次VNPY升级就是非常头疼,要做代码对比,在一些可能被更新覆盖地方再次维护测试。...这次准备不在VNPY库文件代码修改,而是像引用NUMPY或者Pandas这样,采用调用继承方式,把自己代码和VNPY库代码隔离;这样即使VNPY升级,个人代码不用太担心,只要简单测试,保证继承引用...- vtSymbol.json:这个是定义品种交易属性,回测时候从vtSymbol.json文档读取品种交易属性,比如费率,交易每跳,比率,滑点;这样不用在回测时候维护。...主要是有时候用excel做策略批量维护或者生成,然后就可以直接批量回测了。..."""   提供批量CTA策略回测,输出结果到excel或pdf,和CTA策略批量优化,输出结果到excel或pdf,   """   def __init__(self, vtSymbolconfig

    1.4K20

    2011年11月1日 Go生态洞察:编写可扩展App Engine应用

    2011年11月1日 Go生态洞察:编写可扩展App Engine应用 摘要 搜索:Go App Engine, 可扩展性, 性能优化, 云应用开发 猫头虎博主今天要和大家分享是如何在App Engine...编写高效且可扩展Go应用。...Go在App Engine应用因其编译为本地代码而具有高性能,这意味着没有解释器或虚拟机会影响程序和机器之间直接执行。...编写高效应用资源 为了帮助Go开发者更容易地编写高效且可扩展App Engine应用,一些现有的文章已经更新,包括Go源代码片段,并链接到相关Go文档。...编写可扩展应用最佳实践 管理应用资源使用 总结 Go语言在App Engine表现不断提升,为开发者提供了编写高性能、可扩展应用强大能力。

    9710

    Universal-Image-Loader完全解析--从源代码分析Universal-Image-Loader线程池

    (displayTask); 69 } 70 } 71 } 注意上面代码块第48行和第68行,当需要加载显示图片时候,相关task通过engine.submit...官方文档推荐程序员用它来创建线程池,因为它已经配置好常见线程池情景。接下来让我们来了解一下Executors工厂方法所能创建线程池类型。...CPU密集型任务配置尽可能小线程,配置Ncpu+1个线程线程池。IO密集型任务则由于线程并不是一直在执行任务,则配置尽可能多线程,2*Ncpu。...有一次我们组使用后台任务线程池队列和线程池全满了,不断抛出抛弃任务异常,通过排查发现是数据库出现了问题,导致执行SQL变得非常缓慢,因为后台任务线程池里任务全是需要向数据库查询和插入数据,所以导致线程池里工作线程全部阻塞住...主线程数默认为3,感觉定低了,实际IO密集操作应该定得高一点,以便合理利用CPU

    785100
    领券