2009-04-25 67 views
5

当谷歌在新窗口中显示gmail中的PDF附件时,我观看了流量。内容作为每个PDF页面的PNG图像。其文本可以被选中。 Google在服务器端使用什么来为PDF文件中的特定页面生成PNG文件? png文件上文本的选择是如何工作的?有任何想法吗?谷歌使用什么应用程序在Gmail中显示PDF附件

回答

7

默认情况下,使用https://docs.google.com/gview安全地查看附件,但事实证明,您可以通过纯HTTP请求文件。这使得使用Wireshark来弄清楚发生了什么变得容易一些。

正如您所指出的那样,PDF已经在服务器端转换为PNG(ImageMagick确实是一个合理的解决方案),显然这是为了保留确切的布局,同时仍然可以无需PDF阅读器即可查看文件。

然而,看着车辆,我发现,调用/ gview?A = GT当整个PDF也被转换到自定义XML格式&文档ID = &瓒= & 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> 

我不太清楚什么尚未所有文字元素的属性代表(与W和H除外),但它们显然文本,长度可能的坐标。作为the JavaScript Google uses is minimized(或者可能被模糊处理,但这不太可能)精确地确定客户端选择功能的工作原理并不那么容易。但很可能它使用这个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> 

希望这些信息在任何方面是有用的,其他的海报然而就像一个提到的唯一办法,以确保什么谷歌确实是要求他们。这是一个遗憾谷歌没有官方的IRC频道,但他们确实有a forum for Google Docs support questions

祝你好运。

+0

我猜t和l代表顶部和左侧。由于字体在PNG内呈现,Google也不需要字体数据。所以pdf2xml可能是生成器,但是XML随后被解析并删除了一些数据。 – 2009-12-18 20:27:13

1

,如果您有文字,你可以让你想要offcourse什么,

更具体的,你应该看看这个链接:pdf to png using php

这样的ImageMagick将需要imageMagic

编辑:另一个interesting link

编辑:我发现这在谷歌,它看起来有趣...所以你可以使用谷歌API Google Document List Data Api,这是一个关于它的博客帖子Google API Now Lets You Get Documents in Many Formats

Offcourse可以肯定的是谷歌使用你需要一个答案从他们 ? :)

祝你好运!

+0

嗨,谢谢你的回答。链接绝对有趣。我将这些大型PDF(〜50 Mb)作为我的流程的输入,并且这些需要在慢速连接中提供给客户端。但是,客户只需要几页就可以做出决定。 因此,我们正在考虑就像谷歌一样只提供PDF的快照。我们需要某种企业产品来帮助我们做到这一点。最好是java。 这不完全是这样,但有帮助。我有更多的线索是... http://www.jpedal.org/,iText Varun – varun 2009-04-25 19:21:49

2

Google使用非内部开源的PDF转换器应用程序。因此,您最好查看其他答案发布的链接,因为您无法使用Google版本。抱歉!

0

要查看PDF创建的内容,请右键单击它并转到文档属性(在Adobe reader中)。 PDF生产者将显示为“PDF生产者”。我认为谷歌同时使用PrinceIText(不能组合用于创建PDF)。 Google对上述工具包进行了一些重大修改,以创建最终产品。

-2

好吧..这可能只是Google正在使用的pdf2xml工具。他们只改变了他们的全字宽度,高度等,并且他们添加了p属性......这就是包含行内单词坐标的属性。刚刚玩过它,发现:)要从谷歌使用这个pdf2xml:P上传,让他们转换...使用xml转换太... epub? :P

+0

我想你应该先试着理解这个问题。 – 2013-03-11 13:51:00

相关问题