一个 AI 代理在渲染单页之前应先向文档询问三件事:它有多少页、每页的尺寸是多少,以及是否需要密码。GroupDocs.Viewer.Mcp 服务器通过一次廉价调用(get_view_info)在本机本地返回前两项信息,密码问题则在提示中解决。随后代理只渲染真正需要的页面:
contract.docx 是什么——有多少页,页面尺寸是多少?
带有配置和故障排除的逐步说明请参见文档:How to check a document’s pages before rendering them
为什么要先检查?
render_page 工具生成的每一页都会以内联 PNG 形式返回给代理,通常几百千字节。若代理为查找一张表格而渲染了 60 页文件,就会为那 59 张不需要的图片付出时间和上下文窗口的代价。检查工具 get_view_info 不会渲染任何内容,只返回一个小的 JSON 对象,从而基于事实而非猜测决定渲染哪些页面。
此模式可在任何客户端复用:Claude Desktop、Claude Code、Cursor、带 GitHub Copilot 的 VS Code 或 Windsurf。它是一种写在提示中的习惯,而不是需要配置的功能。
问题 1:有多少页?
get_view_info 返回 pageCount。这是唯一防止文档出现尖锐边缘的保护:render_page 并不会检查页码是否超出文档范围。请求渲染 12 页文档的第 40 页时,仍会得到一张名为 <name>_page40.png 的图片,实际上并不是第 40 页。
在提示中加入此保护的示例:
报告有多少页?然后显示最后一页。
对于电子表格来说,页数更为重要。引擎会把工作表拆分为页面,页面数量往往远大于工作表本身的外观。先了解页数可以防止代理一次性渲染全部页面。
问题 2:每页的尺寸是多少?
这份 PDF 的页面尺寸是 Letter 还是 A4?
响应会为每页列出 number、width 和 height(单位为点)。612 × 792 为 US Letter;约 595 × 842 为 A4。若文档中有横向页面混在纵向页面中,这些尺寸信息会显示出来,而该页面往往正是用户询问的表格或图纸所在页。
另外两个字段 name 和 visible 会在格式支持时填充,例如工作表名称、隐藏的幻灯片或工作表。否则它们分别为 null 和 true。
问题 3:文件是否需要密码?
get_view_info 没有密码字段,因此文件类型和页数并不能告诉你是否需要密码。受密码保护的文件在每次调用任意工具时都必须提供密码。可以在提示中提前提供:
contract.pdf 的密码在我的消息中。先检查它有多少页,然后显示第 2 页。
如果没有密码,调用会失败,代理可以向你请求密码而不是盲目猜测。调用失败时,get_view_info 会返回以 View-info lookup failed for 开头的文本,后跟异常类型和信息,代理即可读取原因并请求密码或正确的文件名。
可复用的“检查‑再渲染”提示
在渲染下面文件名的任何内容之前,先检查其文件类型、页数和页面尺寸。告诉我你发现了什么,然后仅渲染回答我问题所需的页面。文件:contract.docx。问题:终止条款在哪里?
代理调用 get_view_info,报告文件类型和页数,挑选页面后对每个页面调用 render_page。服务器上的第三个工具是 get_license_status;当你需要知道渲染的页面是否会被加水印时使用它。
示例会话
基于文档响应结构的示例(非实际截图)。
You: Inspect report.pdf before rendering anything.
Agent: [calls get_view_info on report.pdf]
report.pdf: Portable Document Format File (.pdf), 2 pages.
Page 1: 612 x 792 points (US Letter). Page 2: 612 x 792 points.
Which page would you like me to render?
代理的决策与引擎的行为
| 步骤 | 代理 | 引擎 |
|---|---|---|
| 选择文件 | 从你的提示中获取文件名 | 在存储文件夹中解析文件名,若名称不匹配则列出可用文件 |
| 检查 | 决定哪些问题重要 | 返回文件类型、页数和页面尺寸 |
| 选页 | 将你的问题映射到页码 | 无 |
| 渲染 | 对每个选定的页面调用 render_page |
生成 PNG |
真实限制
- 评估模式。 渲染的页面会带有评估水印,服务器进程最多同时打开 15 份文档。询问 “Viewer 服务器是否已授权?” 以便让代理在依赖输出前调用
get_license_status。 - 页数不会为你挑选页面。
get_view_info只告诉存在哪些页面,而不指明哪一页包含答案。为此,你需要渲染目录页或几个候选页。 - 仅支持 PNG。
render_page没有格式选项。
FAQ
AI 代理如何获取 PDF 的页数? 如果已连接 Viewer 服务器,Claude 可以调用 get_view_info 并读取 pageCount,无需渲染任何页面。答案来源于文档本身,而非猜测。
文档信息 MCP 工具能告诉代理哪些页面需要渲染吗? 可以。先提供页数和尺寸,然后说明你在寻找什么。它会渲染能够回答问题的页面。
检查文档会把它上传到任何地方吗? 不会。服务器从你配置的文件夹读取文件,并将一个小的 JSON 对象返回给客户端。
深入了解
- 文档、权威操作指南:How to check a document’s pages before rendering them
- 文档中心:GroupDocs.Viewer MCP Server
- 入门文章:Multimodal agents need pixels, not just text
- 相关内容:Automate screenshot-grade page images for reports with MCP
- 相关内容:When the answer is in the chart: AI agents reading diagrams and scans via MCP
- 本地部署与安全模型:3 architectures for AI document processing, and the one that keeps files inside your network
- 问答论坛:GroupDocs Viewer forum
- 源代码:GroupDocs.Viewer.Mcp on GitHub