当谷歌在新窗口中显示gmail中的PDF附件时,我观看了流量。内容作为每个PDF页面的PNG图像。其文本可以被选中。 Google在服务器端使用什么来为PDF文件中的特定页面生成PNG文件? png文件上文本的选择是如何工作的?有任何想法吗?谷歌使用什么应用程序在Gmail中显示PDF附件
回答
默认情况下,使用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。
祝你好运。
,如果您有文字,你可以让你想要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可以肯定的是谷歌使用你需要一个答案从他们 ? :)
祝你好运!
嗨,谢谢你的回答。链接绝对有趣。我将这些大型PDF(〜50 Mb)作为我的流程的输入,并且这些需要在慢速连接中提供给客户端。但是,客户只需要几页就可以做出决定。 因此,我们正在考虑就像谷歌一样只提供PDF的快照。我们需要某种企业产品来帮助我们做到这一点。最好是java。 这不完全是这样,但有帮助。我有更多的线索是... http://www.jpedal.org/,iText Varun – varun 2009-04-25 19:21:49
您可能还想调查使用Lucence索引这些大型pdf文件并将相关页面提供给您的用户。
Google使用非内部开源的PDF转换器应用程序。因此,您最好查看其他答案发布的链接,因为您无法使用Google版本。抱歉!
好吧..这可能只是Google正在使用的pdf2xml工具。他们只改变了他们的全字宽度,高度等,并且他们添加了p属性......这就是包含行内单词坐标的属性。刚刚玩过它,发现:)要从谷歌使用这个pdf2xml:P上传,让他们转换...使用xml转换太... epub? :P
我想你应该先试着理解这个问题。 – 2013-03-11 13:51:00
- 1. 在Web应用程序中显示PDF
- 2. 谷歌日历示例应用程序不显示事件
- 3. 显示Django上使用谷歌应用程序引擎
- 4. 谷歌地图不显示在Ionic2应用程序中
- 5. 如何使用Adobe PDF插件强制在谷歌浏览器中显示PDF
- 6. PDF附件显示在Gmail中,但Outlook拒绝打开它
- 7. 为什么javax.mail包在谷歌应用程序引擎sdk中?
- 8. 谷歌应用程序添加附件选项电子邮件
- 9. 谷歌标志不显示在谷歌地图(IPad应用程序)
- 10. 哪个库用于在应用程序中显示PDF文件?
- 11. 可以使用谷歌应用程序直接在Gmail中建立应用程序(google.com/a)?
- 12. 应用程序没有显示在Android市场/谷歌播放
- 13. Ñ没有显示在谷歌应用程序引擎网站
- 14. 如何显示在谷歌应用程序引擎
- 15. 应用程序目录不显示在谷歌云壳
- 16. 谷歌地图不显示在我的Android应用程序
- 17. 谷歌地图不显示在vb.net应用程序
- 18. 谷歌地图仍然没有显示在Android应用程序
- 19. 谷歌应用程序引擎显示unicode在StringProperty v StringListProperty objs?
- 20. 显示用户对Java的谷歌应用程序引擎
- 21. 在Silverlight应用程序中显示pdf。 PDF到XAML
- 22. 在Rails应用程序中内嵌显示pdf文件
- 23. 如何在UWP应用程序中显示PDF文件?
- 24. 在GWT应用程序中显示PDF文件
- 25. 如何在Java GUI应用程序中显示PDF文件?
- 26. 谷歌Chrome应用程序使用谷歌字体
- 27. android gmail在新的Gmail应用程序版本中打开应用程序附件URI问题
- 28. 谷歌 - 应用程序 - 脚本修改Gmail主题行
- 29. 在pdf上添加水印,从谷歌应用程序脚本
- 30. 从PDF中提取文本(谷歌应用程序引擎)
我猜t和l代表顶部和左侧。由于字体在PNG内呈现,Google也不需要字体数据。所以pdf2xml可能是生成器,但是XML随后被解析并删除了一些数据。 – 2009-12-18 20:27:13