【问题标题】:What application does google use to show PDF attachments in gmailgoogle 使用什么应用程序在 gmail 中显示 PDF 附件
【发布时间】:2009-04-25 18:30:58
【问题描述】:

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

【问题讨论】:

    标签: pdf png gmail ocr


    【解决方案1】:

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

    正如您所指出的,很明显 PDF 在服务器端转换为 PNG(ImageMagick 确实是为此目的的合理解决方案),这样做的明显原因是在保持精确布局的同时仍然是无需 PDF 查看器即可查看文件。

    但是,通过查看流量,我发现在调用 /gview?a=gt&docid=&chan=&thid= 时,整个 PDF 也会转换为自定义 XML 格式(在您请求文档后立即完成) .由于我无法使用 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>
    

    希望这些信息在任何方面都有用,但是就像其他海报之一提到的那样,确定 Google 所做的唯一方法是询问他们。很遗憾 Google 没有官方 IRC 频道,但他们有 a forum for Google Docs support questions

    祝你好运。

    【讨论】:

    • 我猜 t 和 l 代表顶部和左侧。 Google 也不需要字体数据,因为字体是在 PNG 中呈现的。所以 pdf2xml 可能是生成器,但是 XML 之后被解析并删除了一些数据。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果你有文字,你可以把它变成你想要的,

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

      所以需要 imageMagick imageMagic

      编辑:另一个interesting link

      编辑:我在 google 发现了这个,看起来很有趣……所以你可以使用 google api Google Document List Data Api 这是一篇关于它的博文Google API Now Lets You Get Documents in Many Formats

      为了确定谷歌使用什么你需要他们的回答? :)

      祝你好运!

      【讨论】:

      • 您好,感谢您的回答。链接肯定很有趣。我有这些大 PDF(~50 Mb)作为我的流程的输入,这些需要在连接速度较慢的情况下提供给客户端。但是,客户可能只需要几页就可以做出决定。因此,我们考虑像谷歌那样只携带 pdf 的快照。我们需要某种可以帮助我们做到这一点的企业产品。最好是java。这不完全一样,但很有帮助。我还有一些潜在客户是.. jpedal.org, iText Varun
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        嗯.. 这可能只是 Google 正在使用的 pdf2xml 工具。他们只更改了全词的宽度、高度等,并添加了 p 属性...原来是包含行内单词坐标的属性。刚刚玩过它,发现:) 打算使用google 的这个pdf2xml :P 上传,让他们转换...使用xml 来转换... epub? :P

        【讨论】:

        • 我认为你应该先试着理解这个问题。
        【解决方案6】:

        您可能还想研究使用 Lucence 来索引那些大的 pdf 文件并将相关页面提供给您的用户。

        更多想法请见http://www.jguru.com/faq/view.jsp?EID=1074237

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-11
          相关资源
          最近更新 更多