默认情况下,使用https://docs.google.com/gview安全查看附件,但事实证明您可以通过纯HTTP请求文件.这样可以更容易地弄清楚使用Wireshark发生了什么.
正如您所指出的,已经很清楚PDF在服务器端转换为PNG(ImageMagick确实是用于此目的的合理解决方案),显而易见的原因是保留了确切的布局,同时仍然能够查看文件无需PDF查看器.
但是,通过查看流量,我发现在调用/ gview时,整个PDF也会转换为自定义XML格式?a = gt&docid =&chan =&thid =(这是在您请求文档后立即完成的).由于我无法使用Wireshark复制XML,因此我使用了Firefox扩展Live HTTP Headers.这是一段摘录:
<pdf2xml>
<meta name="Author" content="Bruce van der Kooij"/>
<meta name="Creator" content="Writer"/>
<meta name="Producer" content="OpenOffice.org 3.0"/>
<meta name="CreationDate" content="20090218171300+01'00'"/>
<page t="0" l="0" w="595" h="842">
<text l="188" t="99" w="213" h="27" p="188,213">Programmabureau</text>
<text l="85" t="127" w="425" h="27" p="85,117,209,61,277,21,305,124,436,75">Nederland Open in Verbinding (NOiV)</text>
</page>
</pdf2xml>
Run Code Online (Sandbox Code Playgroud)
我还不太清楚文本元素的所有属性代表什么(除了w和h),但它们显然是文本的坐标和可能的长度.由于Google使用的JavaScript被最小化(或者可能是混淆,但这不太可能)确切地弄清楚客户端选择功能如何工作并不那么容易.但很可能它使用此XML文件来确定用户正在查看的文本,然后将其复制到用户的剪贴板.
请注意,有一个名为pdf2xml的开源(GPL许可)工具,它具有相似但不完全相同的输出.以下是他们主页上的示例:
<?xml version="1.0" encoding="utf-8" ?>
<pdf2xml pages="3">
<title>My Title</title>
<page width="780" height="1152">
<font size="10" face="MHCJMH+FuturaT-Bold" color="#FF0000">
<text x="324" y="37" width="132" height="10">Friday, September 27, 2002</text>
<img x="324" y="232" width="277" height="340" src="text_pic0001.png"/>
<link x="324" y="232" width="277" height="340" dest_page="2" dest_x="141" dest_y="187"/>
</font>
<font size="12" face="AGaramond-Regular" italic="true" bold="true">
<text x="509" y="68" width="121" height="12">This is a test PDF file</text>
<link x="509" y="68" width="121" height="12" href="www.mobipocket.com"/>
</font>
</page>
</pdf2xml>
Run Code Online (Sandbox Code Playgroud)
希望这些信息在任何方面都有用,不过像其他海报中提到的那样,通过询问他们来确定Google所做的事情的唯一方法就是这样.很遗憾Google没有正式的IRC频道,但他们确实有一个Google Docs支持问题论坛.
祝好运.
| 归档时间: |
|
| 查看次数: |
2586 次 |
| 最近记录: |