vue文本高亮处理

在vue的v-for循环中处理搜索关键字高亮问题,通过截取文字判断,分成三段拼接起来

  <div class="check-list" v-if="shopList.length >0">

                                    <a-checkbox @change="onChangeShop($event,item)"  :checked="checkedList.includes(item.value)" v-for="(item,index) in shopList" :key="index" >

                                        <span class="color-match2"  > {{ item.shopName.substr(0, item.shopName .indexOf(searchValue)) }}</span>
                                        <span class="color-match" >{{ searchValue }}</span>
                                        <span class="color-match2" >{{ item.shopName .substr(item.shopName .indexOf(searchValue)+ searchValue.length)}} </span>
                                    </a-checkbox>

 </div>
//高亮的
.color-match{
    color: #FFFFFF;
}
//非高亮
.color-match2{
    color: #FFFFFF;
    opacity: 0.5;
}
### 实现 Vue2 中的 PDF 文本高亮功能 要在 Vue2 项目中实现 PDF 文本高亮功能,可以考虑使用 `pdf.js` 或者基于它的封装库来完成此操作。以下是具体方法: #### 使用 pdf.js 和其扩展库 `pdf.js` 是 Mozilla 提供的一个用于解析和渲染 PDF 文件的强大工具[^3]。通过它,我们可以加载并显示 PDF 的内容,并进一步实现文本高亮。 1. **安装依赖** 需要先引入 `pdfjs-dist` 库以及可能需要的一些额外样式或组件。 ```bash npm install pdfjs-dist --save ``` 2. **创建一个简单的 PDF 渲染器** 下面是一个基本的例子展示如何在 Vue 组件中加载 PDF 并渲染页面: ```javascript import { createApp } from 'vue'; import * as pdfjsLib from 'pdfjs-dist'; export default { data() { return { pdfDoc: null, currentPage: 1, pagesRendered: [], }; }, methods: { async loadPdf(url) { this.pdfDoc = await pdfjsLib.getDocument(url).promise; this.renderPage(this.currentPage); }, renderPage(num) { const page = this.pdfDoc.getPage(num); page.then((page) => { let viewport = page.getViewport({ scale: 1.5 }); let canvas = document.createElement('canvas'); let context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; let container = document.getElementById('pdf-container'); container.appendChild(canvas); page.render({ canvasContext: context, viewport: viewport, }); // 将当前页加入已渲染数组 this.pagesRendered.push(page); }); }, }, mounted() { this.loadPdf('/path/to/sample.pdf'); // 替换为实际路径 }, }; ``` 3. **实现文本高亮** 要实现文本高亮,可以通过获取 PDF 页面中的文字位置数据 (TextLayerBuilder),然后根据匹配的关键字绘制矩形区域覆盖对应的文字部分。 可以利用如下逻辑处理高亮: ```javascript function highlightText(text, color = '#FF0') { text.forEach(function(item) { item.items.forEach(function(subItem) { subItem.transform.forEach(function(transformData) { // 计算坐标并画出矩形框 drawHighlightRect(context, transformData.x, transformData.y, width, height, color); }); }); }); } function drawHighlightRect(ctx, x, y, w, h, fillColor) { ctx.fillStyle = fillColor; ctx.globalAlpha = 0.4; // 设置透明度 ctx.fillRect(x, y, w, h); ctx.globalAlpha = 1.0; } ``` 这里需要注意的是,具体的宽高等参数需依据实际情况调整计算方式[^4]。 #### 关于插件的选择 虽然目前主流社区更倾向于推荐针对 Vue3 开发的相关插件(如 `vue3-pdf-app`),但在 Vue2 上也可以找到类似的解决方案或者自定义适配现有资源。如果希望减少开发工作量,则可以选择一些成熟的第三方库作为基础框架再做定制化修改。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值