pdf.js 根据坐标高亮文本

需求:后端返回pdf中坐标数组,要求高亮坐标对应的数据
思路:pdf.js生成两层一层是canvas ,一层是文本层-具体表现为dom结构,一个一个div包裹文本,我操作改变的是canvas,至于为什么不操作dom文本层,因为我想玩一下canvas在pdf上面画矩形,用来高亮显示想要突出的内容,根据坐标.当然也可以操作dom结构改变文本,有兴趣的可以看其他作者的关于pdf.js.
在这里插入图片描述

methods: {
    // 绘制bboxes,bboxes:[[x0,y0,x1,y1,△x,△y],[x0,y0,x1,y1,△x,△y]...]
    //  pagesize: [588,1000],588是后端返给我canvas的width,另一个是height
    drawBboxes (bboxes, pagesize, pageno) {
    //获取 iframe
      let iframe = document.getElementById('myIframe');
      function drawColor (bboxes, pagesize, pageno) {
        function getRad (degree) {
          return degree / 180 * Math.PI;
        }
        let pagewidth = eval(pagesize)[0];
        let pageheight = eval(pagesize)[1];
        let pagenum = 'page' + pageno;
        let canvas = iframe.contentDocument.getElementById(pagenum);
        let orgwidth = canvas.width;
        let orgheight = canvas.height;
        let scaleXValue = orgwidth / pagewidth;
        let scaleYValue = orgheight / pageheight;
        let ctx = canvas.getContext('2d');
        ctx.translate(0, orgheight);
        ctx.rotate(getRad(180));
        ctx.scale(-1, 1);
        function fillColor ([x0, y0, x1, y1, lengX, lengY]) {
          ctx.beginPath();
          ctx.moveTo(x0 * scaleXValue, y0 * scaleYValue);
          ctx.lineTo(x1 * scaleXValue, y0 * scaleYValue);
          ctx.lineTo(x1 * scaleXValue, y1 * scaleYValue);
          ctx.lineTo(x0 * scaleXValue, y1 * scaleYValue);
          ctx.closePath();
          ctx.fillStyle = 'RGB(0, 100, 0,.2)';
          ctx.fill();
        }
        eval(bboxes).forEach(item => {
          fillColor(item);
        });
        ctx.setTransform(1, 0, 0, 1, 0, 0);
      };
      drawColor(bboxes, pagesize, pageno);
    },
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
spire.pdf是一个用于处理PDF文件的开源库,可用于提取PDF文档中的文本内容和坐标。 要获取文本坐标,我们需要使用spire.pdf的相关方法和属性。首先,我们需要加载PDF文件,使用PdfDocument类的loadFromFile方法或loadFromStream方法来加载文件。 一旦加载了PDF文件,我们可以通过getPageCount方法获取PDF文件的总页数。然后,我们可以使用getPage方法来获取指定页数的PdfPage对象。 对于每一页,我们可以使用getPageContent方法来获取页面内容的字符串表示。然后,我们可以使用正则表达式或其他文本处理方法来提取文本坐标。根据PDF文件的结构,文本通常包含在Td、TD和TJ操作符中。这些操作符提供了文本字符串和坐标的信息。 我们可以使用正则表达式来匹配这些操作符,并提取坐标信息。例如,我们可以使用表达式"/(Td|TD|TJ)\s*?([\-0-9]+\s*?)+?/"来匹配这些操作符,并提取坐标信息。 在提取坐标信息后,我们可以将其存储到一个数据结构中,如List或数组。这样,我们就可以对PDF文件中的文本进行进一步的操作,如分析、搜索或渲染。 需要注意的是,PDF文件的结构复杂,提取文本坐标可能涉及到一些细节和特殊情况的处理。因此,我们需要了解PDF文件的结构和spire.pdf库的使用方法,以便准确地提取文本坐标。 总之,通过使用spire.pdf库,我们可以加载PDF文件并提取文本坐标。我们可以使用正则表达式或其他文本处理方法来匹配文本操作符,并提取坐标信息。这样,我们就可以对PDF文件中的文本进行有针对性的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值