pdfjs-dist.js使用、Svg、默认canvase、uni会报错ps1、图像不清晰的问题、隐藏功能

博客介绍了在移动端和PC端处理PDF显示不清晰的解决方案,主要问题是DPI设置导致的。作者建议将默认的96DPI调整到72DPI,并提供了使用pdf-dist库进行PDF渲染的方法,同时提到了对于iframe中pdf.js的样式处理,建议使用CSS而非直接修改HTML。还提及了SVG作为替代方案的可能性。
摘要由CSDN通过智能技术生成

前言:
因为canvas是一个画图,所以我在适应移动端和pc端的时候出现了清晰度的问题问题,百度搜索了一下,整理出来

Ps:

pdf-dist和pdf.js一样的,你下载官方pdf的demo,里面有pdf-dist,而且文件还小,我就采用了pdf-dist,有问题可以直接留言,大部分时间会看的(别问太难的,我也不会)

ps1:

uni中canvas的canvas.getContext(‘2d’)被禁掉了应该,我直接使用的pdfh5做的,你也可以考虑svg,但我没用过,超级链接,我下面copy一下他的代码

1、我的原因是dpi 的原因

如上所描述,pdf显示小,不够清晰。有一个重要的原因是默认dpi为96,然后网页一般使用dpi为72。
具体dpi ,

DPI(Dots Per Inch,每英寸点数)是一个量度单位,用于点阵数码影像,指每一英寸长度中,取样、可显示或输出点的数目。
DPI是打印机、鼠标等设备分辨率的度量单位。是衡量打印机打印精度的主要参数之一,一般来说,DPI值越高,表明打印机的打印精度越高。
DPI是指每英寸的像素,也就是扫描精度。DPI越低,扫描的清晰度越低,由于受网络传输速度的影响,web上使用的图片都是72dpi,但是冲洗照片不能使用这个参数,必须是300dpi或者更高350dpi。例如要冲洗4*6英寸的照片,扫描精度必须是300dpi,那么文件尺寸应该是(4*300)*(6*300)=1200像素*1800像素。

代码调整:
在这里插入图片描述
其他的可以参考一下这个博主:飞机地址

2、Pdf-dist使用:

这种写法是为了防止pdf和ofd冲突,我都用了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

data里面的声明变量你们自己调一下

在这里插入图片描述

3、如果你使用了pdf.js的iframe,

你想隐藏掉其他功能,你有没有考虑过使用css去隐藏,直接修改html、太慢,而且容易报错!!!

4、svg的使用,你们可以试一下

 let vm = this;
            PDFJS.getDocument({data: 
                    atob(Base64Str),
                    cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.943/cmaps/',
                    cMapPacked: true
                }).then(function(pdf) {
            var numPages = pdf.numPages;
            var MAX_NUM_PAGES = 5;
            var ii = Math.min(MAX_NUM_PAGES, numPages);
            var promise = Promise.resolve();
            for (var i = 1; i <= ii; i++) {
                if(document.querySelector('[name="page='+i+'"]')){
                    let container = document.querySelector('[name="page='+i+'"]').children[0];
                    
                    var viewport = vm.pdfPage.getViewport(vm.scale);
                    document.querySelector('.pageContainer').children[0].width.baseVal.value = viewport.width;
                    document.querySelector('.pageContainer').children[0].height.baseVal.value = viewport.height;
                    container.style.width = viewport.width + 'px';
                    container.style.height = viewport.height + 'px';
                    document.querySelector('.scroll-content-info').style.width = document.querySelector('.pageContainer').getBoundingClientRect().width + 'px';
                    return;
                }
                var anchor = document.createElement('a');
                anchor.setAttribute('name', 'page=' + i);
                anchor.setAttribute('class', 'pdfATag');
                anchor.setAttribute('title', 'Page ' + i);
                document.getElementsByClassName("scroll-content-info")[0].appendChild(anchor);

                // Using promise to fetch and render the next page
                promise = promise.then(function (pageNum, anchor) {
                return pdf.getPage(pageNum).then(function (page) {
                    vm.pdfPage = page;
                    var viewport = page.getViewport(vm.scale);
                    var container = document.createElement('div');
                    container.id = 'pageContainer' + pageNum;
                    container.className = 'pageContainer';
                    container.style.width = viewport.width + 'px';
                    container.style.height = viewport.height + 'px';
                    anchor.appendChild(container);

                    return page.getOperatorList().then(function (opList) {
                    var svgGfx = new PDFJS.SVGGraphics(page.commonObjs, page.objs);
                    return svgGfx.getSVG(opList, viewport).then(function (svg) {
                        container.appendChild(svg);
                        document.querySelector('.scroll-content-info').style.width = document.querySelector('.pageContainer').getBoundingClientRect().width + 'px';
                        vm.$refs.scroll.refresh();
                        Util.setLoading(!1);
                        !vm.pdfWaterMark && Util.getUserInfo(vm.addWaterMarker);
                    });
                    });
                });
                }.bind(null, i, anchor));
            }
            });

要安装pdf.js-dist,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Node.js和npm(Node包管理器)。你可以在终端或命令提示符中运行以下命令来检查它们是否已正确安装: ``` node -v npm -v ``` 如果没有显示任何错误信息,并且输出了Node.js和npm的版本号,则说明它们已经成功安装。 2. 接下来,创建一个新的文件夹来存放pdf.js-dist。你可以选择在命令行中使用`mkdir`命令或使用文件管理器手动创建文件夹。 3. 进入到刚才创建的文件夹中,然后运行以下命令来初始化一个新的npm项目: ``` npm init -y ``` 这将创建一个默认的`package.json`文件,用于管理项目的依赖项。 4. 现在,运行以下命令来安装pdf.js-dist: ``` npm install pdfjs-dist ``` 这将下载并安装pdf.js-dist及其所有依赖项。 5. 安装完成后,你可以在项目中的JavaScript文件中引入pdf.js-dist。例如,在你的HTML文件中,你可以添加以下代码来加载pdf.js-dist并显示PDF文件: ```html <!DOCTYPE html> <html> <head> <title>PDF.js Example</title> <script src="node_modules/pdfjs-dist/build/pdf.js"></script> </head> <body> <canvas id="pdfCanvas"></canvas> <script> // 在这里使用pdf.js-dist来处理PDF文件 </script> </body> </html> ``` 这样,你就可以使用pdf.js-dist来处理和显示PDF文件了。 请注意,这只是一个基本的安装和使用示例,你还可以根据自己的需求进行更多配置和定制。详细的文档可以在pdf.js的官方网站上找到。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值