跳到内容
  • 福昕首页
  • 开发中心
  • 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 软件开发工具包 > 福昕PDF SDK(桌面/服务器)
  • 标签:
  • 拆分文本,文本对象

如何将单个文本对象拆分成多个?

  • 福昕知识库
  • 2024-11-08

什么是PDF中的文本对象?

PDF中的一行文本,通常由一个或多个文本对象组成。一个文本对象可以包含一个或多个字符,所有字符共用同一个字体和文本属性(文本属性包含:字号、颜色、透明度、词间距等),不能换行。下图所示就是用福昕PDF高级编辑器(编辑->编辑对象->文本对象)选中的一个文本对象。

所以在使用SDK编辑PDF中的文本时,除了SDK本身提供的搜索替换、段落编辑等相对高级的接口外,通常是需要直接操作文本对象的。

拆分文本对象的场景:

例如一个文本对象比较长,希望将文本对象中间,将指定区域的几个字符进行删除用色块填充,或者希望只移动文本对象中的部分文本。此时就需要将文本拆分成三段,只处理中间的一段,保证前后两端的剩余文本位置,和文本属性不发生改变。

实现方式

福昕SDK提供对象图形、图片、文本对象克隆的接口,并且对于文本对象,还提供获接口取每个字符的宽高、位置等细节信息,通过这些信息,可以实现文本对象的拆分。

例如用户高亮了这个文本对象的中间部分

拆分后的效果应该是:

实现该效果的C#示例代码如下:


        static void SplitTextObject()
        {
            PDFDoc doc = new PDFDoc("D:\\Downloads\\AboutFoxit.pdf");
            doc.Load(null);
            PDFPage page = doc.GetPage(0); 
            page.StartParse(0, null, true);
            //先在PDF上用一个矩形注释,或者高亮注释框选出要单独拆分出的文本
            Annot annot = page.GetAnnot(0);
            RectF selectRect = annot.GetRect();
            GraphicsObjectArray objArray = page.GetGraphicsObjectsAtRectangle(annot.GetRect(),GraphicsObject.Type.e_TypeText);
            //objArraySelected 用于存放被矩形区域框选中的文本对象 
            GraphicsObjectArray objArraySelected = new GraphicsObjectArray();
            int textObjCount = objArray.GetSize();
            for (int i = 0; i < textObjCount; i++)
            {
                TextObject textObj = objArray.GetAt(i).GetTextObject();
                RectF rect = textObj.GetRect();
                RectF rectObj = textObj.GetRect();
                rect.Intersect(selectRect);//Rect相交
                //如果矩形区域不包含,则相交区域宽度为0      
                if (rect.Width() <= 0)
                    continue;
                //如果完全包含,则相交区域的宽和文本对象的宽是一致的          
                if (rect.Width() == rectObj.Width())
                    objArraySelected.Add(textObj);
                else
                {
                    String str = textObj.GetText();
                    int charS = -1;
                    int charE = -1;
                    for (int charIndex = 0; charIndex < str.Length ; charIndex++)
                    {
                        PointF charPos = textObj.GetCharPos(charIndex);
                        float charWidth = textObj.GetCharWidthByIndex(charIndex);
                        if (charPos.x>= selectRect.left & charS == -1)
                        {
                            charS = charIndex;
                            charE = charIndex;
                            continue;
                        }
                        else if (charPos.x >= selectRect.right)
                        {
                            charE = charIndex;
                            break;
                        }
                    }
                    getSelectTextObject(textObj, charS, charE, page, objArraySelected);
                    i--;
                    textObjCount--;
                }
            }
            page.GenerateContent();
            doc.SaveAs("D:\\Downloads\\result.pdf", 0);
        }
    

相关内容

福昕高级PDF编辑器专业版+如何实现手机遥控PDF文档

福昕高级PDF编辑器专业版+如何实现批量对文档名称重命名

福昕高级PDF编辑器专业版+如何快速将发票生成报销单

福昕高级PDF编辑器专业版+如何将PDF转换为office格式实现在线编辑

电子签章对外签署如何实现批量签署文档

如何设置用户仅可删除自身注释的权限?

PDF Web SDK 缓存数据持久化存储

如何在PDF页面上添加文本内容时实现自动换行功能?

Conversion SDK Linux C++版本如何执行样例代码?

GSDK的OCR能力如何支持多进程?

推荐内容

福昕高级PDF编辑器专业版+如何实现手机遥控PDF文档

福昕高级PDF编辑器专业版+如何实现批量对文档名称重命名

福昕高级PDF编辑器专业版+如何快速将发票生成报销单

福昕高级PDF编辑器专业版+如何将PDF转换为office格式实现在线编辑

电子签章对外签署如何实现批量签署文档

如何设置用户仅可删除自身注释的权限?

PDF Web SDK 缓存数据持久化存储

如何在PDF页面上添加文本内容时实现自动换行功能?

Conversion SDK Linux C++版本如何执行样例代码?

GSDK的OCR能力如何支持多进程?

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

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

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

隐私策略