近新项目需要处理 PDF,研究了 PDf.js 之后觉得很不错,于是写篇文章推荐给大家。
PDF.js 的功能和它的名字一样简单,是一个使用 HTML5 技术来让前端网页支持读取、解析和显示 PDF 文档的 JS 工具库。这个项目由大名鼎鼎的 Mozilla 组织开发并且更新维护着,没错,就是那个开发了火狐浏览器的 Mozilla。所以 pdf.js 也内置在 Firefox 的 19+ 版本中,也是火狐浏览器的默认 PDF 处理工具。
一般来说,要查看 PDF 文档,我们需要一个 PDF 阅读器软件,而通过 PDF.js 可以在浏览器中直接显示和处理 PDF 文档,无论是在线浏览、存档或者其他基于 PDF 的功能都可以实现。
PDF.js 项目主页
如果只是为什么显示 PDF 文档,其实大部分情况下浏览器都支持直接打开 PDF,之前碰到要显示 PDF 的需求,都是直接在浏览器新标签打开。
在浏览器中渲染 PDF
不过就在上周,我接到了一个需求,要在网页上支持导入 PDF 文件,转化成图片保存到后端,并且还要提取 PDF 文档中的文字。于是我就开始研究 PDF.js ,了解之后发现这个工具库非常强大,完全可以满足我的需求,那些在线转换 PDF 的工具实际上都是基于 PDF.js 开发的。
我要处理的文档有一部分是发票,其实里面的文字并不是图片,而是可以选择的,这种类型的文档通过 PDF.js 甚至可以直接获取文字的内容,OCR 识别的过程都免了,实在太棒了。
要开始使用 PDF.js ,可以直接从项目下载源码,然后在页面中引入 pdf.js ,就可以按照代码例子那些来使用了。
官方文档
我是在 Vue 项目中使用,所以我选择用 npm 安装的方式:
npm i pdfjs-dist -S
然后在 Vue 页面中引入 PDF.js,注意这里的引入方式,需要在包名后加上 /webpack ,否则会报错,原因我也没有去深入排查。
<template>
<div class="hello">
<input
type="file"
name="file"
id="file"
accept="application/pdf"
single
placeholder="请选择pdf文件"
@change="handleFile"
/>
<canvas id="viewer" ref="viewer" :width="width" :height="height"></canvas>
</div>
</template>
<script>
import { getDocument } from "pdfjs-dist/webpack"; // 注意这里的引入方式
// 省略无关代码...
// methods:
handleFile(e) {
const reader = new FileReader();
reader.onload = (evt) => {
this.init(evt.target.result);
};
reader.readAsDataURL(e.target.files[0]);
},
async init(path) {
// 读取pdf
let pdf = await getDocument(path).promise; //返回一个pdf对象
const page = await pdf.getPage(0); // 获取第一页
const viewport = page.getViewport({ scale: 1 });
const textContent = await page.getTextContent();
console.log(textContent.items); // 页面的文章内容在这
const context = this.canvas.getContext("2d");
// 设置canvas的尺寸
this.width = viewport.width;
this.height = viewport.height;
await page.render({ canvasContext: context, viewport: viewport }).promise; // 渲染第一页内容
},
</script>
上面这段代码就是我项目 demo 中的一部分,可以实现读取 PDF 文档中的页面和文字,代码的末尾把第一页渲染到了 canvas 中,想要转成图片,只要把 canvas 中的内容转成 PNG 图片即可,区区十来行代码,非常简单。
除了提取文章和转成图片,PDF.js 还很多强大的功能,比如可以实现页面导航,预览时加入缩放、滚动、旋转和手写等注释以及实现打印、另存为等操作。
还有些付费软件的功能是压缩 PDF 文档,PDF.js 也可以压缩处理超大型的 PDF 文档,技术原理是把文档中没有使用的结构、元素和对象删除,大大简化文档,从而起到压缩的效果。
总之,想要在项目处理 PDF,PDF.js 是首选,并且目前没有看到类似好用并且强大的 JS 库,反而很多 PDF 工具都是基于 PDF.js 二次封装的。
Mozilla 组织本身是一个非营利性组织,成立以来一直致力于推动浏览器的良好发展,PDF.js 也不例外,是一个免费开源的项目,源码基于 Apache 2.0 许可托管在 Github 上,任何人都可以免费下载来使用,用在商业项目也完全没问题。
↓↓点击查看本次分享的网站。
PDF.js - 免费开源的 JavaScript 读取、显示 PDF 文档的工具库,由 Mozilla 开发并且持续维护|那些免费的砖
I绘画创作已经成为当下热门的话题之一,而提示词作为AI绘画创作的重要组成部分,也备受关注。今天,Stable Diffusion中文网将为大家分享一些好用的AI绘画提示词工具。
无界AI官网提供了一个全面的提示词大全,您可以根据不同的标签类型选择您想要的词语,并进行复制使用。
Danbooru标签超市收集了更多细节和特殊的相关词语,甚至包括了一些乱七八糟的神奇形容词。您可以通过搜索联想功能快速找到您需要的提示词。
MIKU TOOLS是一个非常简单易用的工具网站,您只需点击您想要的标签或提示词,网站会自动帮您编辑好格式的文本,方便您复制粘贴使用。
Stable Diffusion 法术解析是一个与前面几个工具不同的网站。它主要用于推演解析已有的AI绘画作品,帮助您了解创作者在创作过程中使用了哪些提示词。虽然无法百分百破解原始提示词,但它会给您带来很大的启发。
最后,我们还发现了一个好用的提示词反推网站,名为stariu。它可以根据图片生成相应的文字描述,为您提供更多创作灵感。
以上就是几个我觉得很好用的AI绘画提示词工具,希望对您有所帮助。无论您是刚刚开始接触AI绘画还是已经是一位经验丰富的魔法师,这些工具都能为您的创作提供一些有趣的灵感和支持。快来尝试一下吧!
作者:SD中文网,如若转载,请注明出处:https://www.stablediffusion-cn.com/sd/sd-use/967.html
weet Tooltip:基于 CSS3 的工具提示插件,提供多种提示风格
qTip:强大且精致的jQuery提示信息插件
Hint.CSS:采用SASS构建的纯CSS工具提示库,无需 JavaScript 代码
grumble.js:可创建球形气泡的工具提示
TIPSY:类似于Facebook的工具提示插件
响应式且移动友好性非常强的CSS jQuery工具提示插件
Opentip:开源免费的JavaScript工具提示框架
qTip2:第二代qTip
Tooltipster:jQuery HTML5工具提示插件,允许你轻松创建语义和流行的工具提示
Ajax Tooltip:Ajax工具提示脚本
gdakram:一个简单的动画悬停工具提示的jQuery插件
Hovercard:免费且轻量级的jQuery插件,可以轻松的在弹出层中显示文本、链接或者其他任何 HTML 元素的相关信息
clueTip:方便您为链接或其它元素添加Tooltip功能。当链接包括title属性时,它的内容将变成clueTip的标题
simpletip:一个简单的 jQuery 的工具提示(tooltip)插件,至此静态、动态以及Ajax加载的工具提示内容
Pines Notify:JavaScript通知插件,用于Bootstrap或jQuery UI
JTip:jQuery & AJAX 工具提示解决方案
(mb)Tooltip:为你的使用jQuery的页面提供的一个美丽的tooltip
Prototip2:基于Prototype框架的信息提示(tooltip)插件,提供了多样的界面效果,并且具有很高的可定制性
UniTip:一个易于实现和定制,支持多浏览的tooltip脚本
Annotator:开源jQuery文本注解插件,包含注释、标签、用户
气泡式工具提示
一个优秀的超链接鼠标悬停提示
GIPS:清洁,简单的jQuery插件,支持CSS主题
地图标签&工具提示
Profile Tooltip:一款显示个人资料的工具提示插件
*请认真填写需求信息,我们会在24小时内与您取得联系。