油猴复制当前浏览器页面网址/标题markdown链接

油猴使用快捷键复制浏览器当前页面网址/标题markdown链接插件,此脚本直接在油猴脚本中心添加即可。先点击要复制网址的页面任何地方,再按快捷键alt+u即可复制成类似[极四维博客-CWAY's LIFE](https://cway.top/)的链接形式,方便插入markdown文本中。另外Edge浏览器默认可直接复制网址链接富文本,edge上复制再粘贴到Typora中即可。如果你不想edge浏览器复制网址后变成链接了,那么可以点击edge右上角三个点,点击设置->共享、复制和粘贴->纯文本即可,若想保留复制网址成为链接功能,也可以按快捷键Ctrl+Shift+V亦可以粘贴为纯文本。// ==UserScript==// @name 复制当前地址// @namespace http://tampermonkey.net/// @version 0.1// @description 点击网页任意地方,同时按Alt+U键复制当前网页地址与标题为markdown格式// @author You// @icon https://www.google.com/s2/favicons?sz=64&domain=greasyfork.org// @include *://*.*/*// @grant none// ==/UserScript==(function() { var flag = 0; document.body.addEventListener('keydown', function(event) { var keynum; if (window.event) // IE { keynum = event.keyCode; } else if (event.which) // Netscape/Firefox/Opera { keynum = event.which; } if (keynum == 85&&event.altKey) { //若想更改快捷键,请用需要的keyCode与keynum变量进行比较。altKey可以改为ctrlKey、shiftKey或metaKey。请务必注意尽量避免快捷键冲突! let title = document.title; let url = window.location.href; let data = `[${title}](${url})`; let transfer = document.createElement('input'); document.body.appendChild(transfer); transfer.value = data; transfer.focus(); transfer.select(); if (document.execCommand('copy')) { document.execCommand('copy'); } transfer.blur(); Toast('复制成功',1000); document.body.removeChild(transfer); } }); function Toast(msg, duration) { duration = isNaN(duration) ? 3000 : duration; var m = document.createElement('div'); m.innerHTML = msg; m.style.cssText = "max-width:60%;min-width: 150px;padding:0 14px;height: 40px;color: rgb(255, 255, 255);line-height: 40px;text-align: center;border-radius: 4px;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;"; document.body.appendChild(m); setTimeout(function() { var d = 0.5; m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in'; m.style.opacity = '0'; setTimeout(function() { document.body.removeChild(m) }, d * 1000); }, duration); } document.body.onkeydown=function(event){ //alert(event.keyCode); };})();另外发现一些现成的油猴脚本可自行下载,都是使用悬浮按钮形式:via-复制markdown链接 - 源码复制标题和地址(myFirstScript) - 源码

油猴复制当前浏览器页面网址/标题markdown链接

Java读取PDF信息文本,获取电子签章信息

Java读取PDF信息文本,获取电子签章信息使用Spire组件,参考如下中文官网,分为免费版和付费版,根据自己需求而定。依赖配置收费版在 pom.xml 文件中配置 Maven 仓库路径。<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository></repositories>然后,在 pom.xml 文件中指定 Spire 产品的 Maven 依赖。如下列举了几种产品的配置方式,可参考使用。配置 Spire.PDF for Java<dependencies> <dependency> <groupId> e-iceblue </groupId> <artifactId>spire.pdf</artifactId> <version>5.4.0</version> </dependency></dependencies>免费版如需配置 Spire 产品的免费版本 jar 包,只需更改 artifactId 和 version 信息即可,如下配置方法:配置 Free Spire.PDF for Java<dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>5.1.0</version> </dependency></dependencies>完整配置参考:通过 Maven 仓库安装 Spire 系列 Java 产品 (e-iceblue.cn)Jar包导入当然你也可以直接导入jar包使用,仓库:Search - Nexus Repository Manager (e-iceblue.cn)读取电子签名信息示例import com.spire.pdf.PdfDocument;import com.spire.pdf.PdfPageBase;import com.spire.pdf.security.PdfCertificate;import com.spire.pdf.security.PdfSignature;import com.spire.pdf.security.X509NameType;import com.spire.pdf.widget.PdfFieldWidget;import com.spire.pdf.widget.PdfFormFieldWidgetCollection;import com.spire.pdf.widget.PdfFormWidget;import com.spire.pdf.widget.PdfSignatureFieldWidget;import java.awt.*;import java.awt.geom.Rectangle2D;import java.awt.image.BufferedImage;public class pdfTest { public static void main(String[] args) { PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("示例.pdf");//路径加载PDF文件 //获取域集合 PdfFormWidget widgets = (PdfFormWidget) pdf.getForm(); PdfFormFieldWidgetCollection fieldWidgetCollection = widgets.getFieldsWidget(); for (int i = 0; i < fieldWidgetCollection.getCount(); i++) { PdfFieldWidget widget = (PdfFieldWidget) fieldWidgetCollection.get(i); if (widget instanceof PdfSignatureFieldWidget) { PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget) widget; //获取签名信息 PdfSignature signature = signatureFieldWidget.getSignature(); PdfCertificate certificate = signatureFieldWidget.getSignature().getCertificate(); String certificateInfo = certificate.toString();// System.out.println(certificateInfo);// 获取证书颁发者字段(subject)// System.out.println("subject:" + certificate.getSubject());// 第二个参数为true颁发者 false为颁发给的单位// System.out.println(certificate.getNameInfo(X509NameType.SimpleName, true));// System.out.println(certificate.getNameInfo(X509NameType.SimpleName, false)); String location = signature.getLocationInfo(); String reason = signature.getReason(); String data = signature.getDate().toString(); String name = signature.getSignatureName(); PdfPageBase page = signatureFieldWidget.getPage(); System.out.println("签名位置信息:" + location + "\n" + "签名原因:" + reason + "\n" + "签名日期:" + data + "\n" + "签名人:" + name + "\n" + "颁发给:" + certificate.getNameInfo(X509NameType.SimpleName, false) + "\n" + "文档中的签名坐标:X = " + signatureFieldWidget.getLocation().getX() + " Y = " + signatureFieldWidget.getLocation().getY() ); //获取页面索引 int pageIndex = pdf.getPages().indexOf(page) + 1; int count = pdf.getPages().getCount(); System.out.println("签名所在页:" + pageIndex + "/" + count); } } }}详细文档:Spire.PDF for Java 中文教程 (e-iceblue.cn)其它参考:X509NameType 枚举 (System.Security.Cryptography.X509Certificates) | Microsoft Docs

如何测试/获取显示屏实际刷新率

网站:UFO Test: Multiple Framerates (testufo.com)点击进去可测试屏幕刷新率等信息。