跳到内容
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 插件商店
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 插件商店
申请试用
  • 企业自动化
    • Compressor
  • 福昕CloudAPI
  • 福昕PDF SDK 软件开发工具包
    • 福昕PDF SDK(ActiveX)
    • 福昕PDF SDK(桌面/服务器)
    • 福昕PDF SDK(Plug-in)
    • 福昕 PDF SDK(安卓)
    • 福昕PDF SDK(iOS)
    • 福昕PDF SDK(Web)
  • 福昕管理控制台
    • 公有云
    • 私有云
    • 通用情况
  • 福昕阅读器
    • RMS插件
  • 福昕高级编辑器
    • AI助手
    • Mac版本
      • 常规问题
    • Windows版本
      • ECM集成
      • 互联PDF
      • 企业管理指南
      • 保护
      • 内容编辑
      • 创建PDF
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
      • 操作指南
    • 网页版
      • Foxit eSign
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕PDF SDK 软件开发工具包 > 福昕PDF SDK(桌面/服务器)
  • 标签:
  • Bitmap,RectF,光栅,显示,获取页面内容区域,透明线条和文本,页面主体内容,页面解析

如何精确获取PDF页面内容显示区域的RectF?

  • 福昕知识库
  • 2025-03-12

在PDF文档处理中,有时需要定位页面主体内容所在的区域,例如估算页边距或判断页面主体内容的宽高等。可以通过PDFPage.CalcContentBBox()接口来获取页面内容区域所占的RectF。

特殊情况处理:如果通过PDFPage.CalcContentBBox()接口获取的RectF与预期不一致,可能是由于页面中存在透明的线条或文本,导致计算的内容区域与人眼所见区域不一致。例如下面左侧这个页面,人眼看见的可能只有下方的页脚。右侧是用福昕高级PDF编辑器:编辑->编辑对象->全部,按ctrl+a全选。可以看见页面中有有白色或透明的线段构成了一个大的表格。这些元素可能会影响内容区域的计算。

解决方案:为了获取人眼所能看见的页面内容区域大小,可以先将PDF页面进行光栅化,转为Bitmap后,通过Bitmap的估算内容区域进行处理。

如下C#代码展示了如何获取人眼所见的内容区域,并用红色注释标出:

PDFDoc doc = new PDFDoc(@"D:\test.pdf");
                ErrorCode errorCode= doc.Load(null);
                for (int i = 0; i < doc.GetPageCount(); i++)
                {
                    using (PDFPage page = doc.GetPage(i))
                    {
                        page.StartParse(0, null, true);
                        int width = (int)(page.GetWidth());
                        int height = (int)(page.GetHeight());
                        Matrix2D matrix = page.GetDisplayMatrix(0, 0, width, height, page.GetRotation());
                        using (foxit.common.Bitmap bitmap = new foxit.common.Bitmap(width, height, foxit.common.Bitmap.DIBFormat.e_DIBArgb, System.IntPtr.Zero, 0))
                        {
                            bitmap.FillRect(0xFFFFFFFF, null);
                            using (Renderer render = new Renderer(bitmap, false))
                            {
                                //光栅化
                                render.StartRender(page, matrix, null);
                                RectI rectI = bitmap.CalculateBBoxByColor(0xffffffff);
                                //估算内容区域
                                RectF rect=new RectF(rectI.left, page.GetHeight() - rectI.bottom, rectI.right, page.GetHeight() - rectI.top);
                                Annot annot= page.AddAnnot(foxit.pdf.annots.Annot.Type.e_Square,rect );
                                annot.ResetAppearanceStream();
                            }
                        }
                    }
                }
                doc.SaveAs(@"D:\addAnnot.pdf", 0);

相关内容

RDK Android 如何设置单页上下滑动翻页?

PDF转Word时,如何仅处理指定页面?

PDF和OFD如何批量互转?

Bitmap 类如何与其他的图像类互转?

打印管理PrintManager怎么判断文档打印是否完成?

软件如何打开嵌入在office文档中Adobe PDF图标

福昕高级PDF编辑器专业版如何在文档中嵌入一个3D模型

福昕高级PDF编辑器专业版如何实现对图片和文档内容添加马赛克

福昕高级PDF编辑器如何显示注释内容图标

福昕高级PDF编辑器如何添加和调整快速访问工具栏功能

推荐内容

RDK Android 如何设置单页上下滑动翻页?

PDF转Word时,如何仅处理指定页面?

PDF和OFD如何批量互转?

Bitmap 类如何与其他的图像类互转?

打印管理PrintManager怎么判断文档打印是否完成?

软件如何打开嵌入在office文档中Adobe PDF图标

福昕高级PDF编辑器专业版如何在文档中嵌入一个3D模型

福昕高级PDF编辑器专业版如何实现对图片和文档内容添加马赛克

福昕高级PDF编辑器如何显示注释内容图标

福昕高级PDF编辑器如何添加和调整快速访问工具栏功能

产品
  • 应用行业
  • 白皮书
开发支持
  • 开发中心
  • SDK文档资料

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

©2026 福建福昕软件开发股份有限公司 版权所有

隐私策略