从 blob url 读取 plan/text
Reading plan/text from blob url
要求使用 Java 将 pdf 文本读取为字符串以进行测试。我不确定是否可以使用从浏览器提取的 Blob url 来提取内容。
这是我在DOM
中看到的
<embed id="plugin" type="application/x-google-chrome-pdf" src="blob:https://XXX.XX.XXX.com/d4c1b2ec-bd22-4e7c-aa41-31d6ba5212b3" stream-url="blob:chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/141ca21a-5f63-410b-a4c8-dc9a0554eb77" headers="Content-Length: 8159 Content-Type: application/pdf " background-color="0xFF525659" top-toolbar-height="56">
我最初认为应该有一种方法可以提取文本(纯文本或 base64 编码),然后将其转换为特定格式,但由于我对 Blob 的理解有限,我无法找到任何答案 url.
这是我迄今为止尝试过的方法,但我得到的响应是空的。
var xhr = new XMLHttpRequest;
xhr.responseType = 'text';
xhr.onload = function() {
var recoveredBlob = xhr.response;
var reader = new FileReader;
reader.onload = function() {
var blobAsDataUrl = reader.result;
window.location = blobAsDataUrl;
};
reader.readAsDataURL(recoveredBlob);
};
xhr.open('GET', 'blob:https://XXX.XX.XXX.com/d4c1b2ec-bd22-4e7c-aa41-31d6ba5212b3');
xhr.send();
还值得一提的是,我正在使用Selenium 执行此脚本。我的目标是在不将 pdf 下载到任何本地机器的情况下提取数据。所以,最终我有两个困惑:
- 是否可以从创建为 'Content-Type: application/pdf' 的 blob url 中提取数据?
- 有没有其他办法;可能,将 blob url 转换为 dataurl 然后将内容提取为 String?
我使用 Javascript 执行程序从 Selenium 中完成了 运行 以下脚本。
public static String generateDataUrlFromBlobUrl(String blobUrl){
return String.format("var xhr = new XMLHttpRequest;\r\n" +
"xhr.responseType = 'blob';\r\n" +
"\r\n" +
"xhr.onload = function() {\r\n" +
" var recoveredBlob = xhr.response;\r\n" +
"\r\n" +
" var reader = new FileReader;\r\n" +
"\r\n" +
" reader.onload = function() {\r\n" +
" var blobAsDataUrl = reader.result;\r\n" +
" window.location = blobAsDataUrl;\r\n" +
" };\r\n" +
"\r\n" +
" reader.readAsDataURL(recoveredBlob);\r\n" +
"};\r\n" +
"\r\n" +
"xhr.open('GET', '%s');\r\n" +
"xhr.send();", blobUrl);
}
要求使用 Java 将 pdf 文本读取为字符串以进行测试。我不确定是否可以使用从浏览器提取的 Blob url 来提取内容。
这是我在DOM
中看到的<embed id="plugin" type="application/x-google-chrome-pdf" src="blob:https://XXX.XX.XXX.com/d4c1b2ec-bd22-4e7c-aa41-31d6ba5212b3" stream-url="blob:chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/141ca21a-5f63-410b-a4c8-dc9a0554eb77" headers="Content-Length: 8159 Content-Type: application/pdf " background-color="0xFF525659" top-toolbar-height="56">
我最初认为应该有一种方法可以提取文本(纯文本或 base64 编码),然后将其转换为特定格式,但由于我对 Blob 的理解有限,我无法找到任何答案 url.
这是我迄今为止尝试过的方法,但我得到的响应是空的。
var xhr = new XMLHttpRequest;
xhr.responseType = 'text';
xhr.onload = function() {
var recoveredBlob = xhr.response;
var reader = new FileReader;
reader.onload = function() {
var blobAsDataUrl = reader.result;
window.location = blobAsDataUrl;
};
reader.readAsDataURL(recoveredBlob);
};
xhr.open('GET', 'blob:https://XXX.XX.XXX.com/d4c1b2ec-bd22-4e7c-aa41-31d6ba5212b3');
xhr.send();
还值得一提的是,我正在使用Selenium 执行此脚本。我的目标是在不将 pdf 下载到任何本地机器的情况下提取数据。所以,最终我有两个困惑:
- 是否可以从创建为 'Content-Type: application/pdf' 的 blob url 中提取数据?
- 有没有其他办法;可能,将 blob url 转换为 dataurl 然后将内容提取为 String?
我使用 Javascript 执行程序从 Selenium 中完成了 运行 以下脚本。
public static String generateDataUrlFromBlobUrl(String blobUrl){
return String.format("var xhr = new XMLHttpRequest;\r\n" +
"xhr.responseType = 'blob';\r\n" +
"\r\n" +
"xhr.onload = function() {\r\n" +
" var recoveredBlob = xhr.response;\r\n" +
"\r\n" +
" var reader = new FileReader;\r\n" +
"\r\n" +
" reader.onload = function() {\r\n" +
" var blobAsDataUrl = reader.result;\r\n" +
" window.location = blobAsDataUrl;\r\n" +
" };\r\n" +
"\r\n" +
" reader.readAsDataURL(recoveredBlob);\r\n" +
"};\r\n" +
"\r\n" +
"xhr.open('GET', '%s');\r\n" +
"xhr.send();", blobUrl);
}