我很想知道 Google Docs PDF 查看器是如何工作的?它不是像 scribd.com 这样的闪存;它看起来像纯 HTML。知道他们是怎么做到的吗?
3 回答
Google 只是提供一张图片(右键单击 -> 另存为),并带有一个覆盖以突出显示文本。
您应该查看其他人更详细的这个 SO question 。
您还应该查看 PDF 链接的来源,看起来 Google 正在传递 PDF 链接以将其转换为图像。
例子:
<script type="text/javascript">
var gviewElement = document.getElementById('gview');
var config = {
'api': false,
'chrome': true,
'csi': true,
'ddUrl': "http://www.idfcmf.com/downloads/monthly_fund/2009/IDFC-Premier-Equityfund-jan10.pdf",
'element': gviewElement,
'embedded': false,
'initialQuery': "",
'oivUrl': "http://docs.google.com/viewer?url\x3dhttp%3A%2F%2Fwww.idfcmf.com%2Fdownloads%2Fmonthly_fund%2F2009%2FIDFC-Premier-Equityfund-jan10.pdf",
'sdm': 200,
'userAuthenticated': true
};
var gviewApp = _createGView(config);
gviewApp.setProgress(50);
window.jstiming.load.name = 'view';
window.jstiming.load.tick('_dt');
</script>
编辑
此外,如果您要使用 Firebug 在 Firefox 中查看 PDF 查看器,您会注意到,当您“突出显示”文本时,它实际上只是启用了 div 的加载,我猜 Google 会使用 OCR 扫描文档,检测文本的位置和提供一个坐标矩阵,作为 div 放置的基础,当您单击并拖动它时,它会引入鼠标指针位置以确定要显示的 div。
整个事情就是一个图像。文本突出显示覆盖 - 这很容易弄清楚。但是当你按下 ctrl+c 并将它复制到剪贴板时,那部分让我完全难过。因为不可能在 Firefox 中使用 javascript 写入剪贴板,但是图像上的这个 ctrl+c 在 Firefox 中可以正常工作。http://www.google.com/support/forum/p/Google+Docs/thread?tid=67dcf21ef8579b4c&hl=en&fid=67dcf21ef8579b4c00047e4a2a9fcb12
我同意其他一些答案 - PDF 呈现为 PNG,并且很可能文本区域是分层的,可能使用绝对/相对定位。您可以从 PDF 中提取 PDF 信息(当然...)。PDF 格式是开放的——任何人都可以做到(当然,这可能并不容易)。但是,有一些开源工具(xPDF...)可以导出 PDF 内容,例如 XML。导出内容可能包含坐标信息,例如关于页面文本和图像应在何处显示的坐标。