Какое приложение Google использует для отображения вложений PDF в Gmail? - PullRequest
5 голосов
/ 25 апреля 2009

Я смотрел трафик, когда Google отображает вложения PDF в gmail в новом окне. Содержание подается в виде изображений PNG для каждой страницы PDF. И его текст можно выделить. Что Google использует на стороне сервера для создания файла PNG для конкретной страницы в файле PDF? Как работает выделение текста в png-файле? Есть идеи?

Ответы [ 6 ]

7 голосов
/ 26 апреля 2009

По умолчанию вложения просматриваются с использованием https://docs.google.com/gview,, однако оказывается, что вам разрешено запрашивать файлы по обычному HTTP. Это немного облегчает понимание того, что происходит, используя Wireshark .

Как вы указали, уже было ясно, что PDF-файл преобразуется на стороне сервера в формат PNG ( ImageMagick действительно является разумным решением для этой цели), очевидной причиной этого является сохранение точного макет, сохраняя возможность просмотра файла без просмотра PDF.

Однако, просмотрев трафик, я обнаружил, что весь PDF также преобразуется в пользовательский формат XML при вызове / gview? 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>

Я еще не совсем уверен, что означают все атрибуты в текстовом элементе (за исключением w и h), но они, очевидно, являются координатами текста и, возможно, длины. Поскольку JavaScript, используемый Google, сведен к минимуму (или, возможно, обфусцирован, но это маловероятно), выяснить, как именно работает функция выбора на стороне клиента, не так просто. Но, скорее всего, он использует этот XML-файл, чтобы выяснить, какой текст просматривает пользователь, а затем скопирует его в буфер обмена пользователя.

Обратите внимание, что существует инструмент с открытым исходным кодом (лицензированный по лицензии GPL) pdf2xml , который имеет схожие, но не совсем одинаковые выходные данные. Вот пример с их домашней страницы:

<?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, но у них есть форум для вопросов поддержки Документов Google .

Удачи.

2 голосов
/ 26 апреля 2009

Google использует приложение PDF-конвертера без открытых источников, разработанное собственными силами. Так что вам лучше просматривать ссылки, опубликованные в других ответах, поскольку вы не можете получить в руки версию Google. Извините!

1 голос
/ 25 апреля 2009

если у вас есть текст, вы можете сделать это, как вы хотите, конечно,

более конкретно, вы должны проверить эту ссылку: pdf в png используя php

поэтому потребуется imageMagick imageMagic

редактировать: еще интересная ссылка .

edit: я нашел это в Google, выглядит интересно ... так что вы можете использовать Google API Данные списка документов Google Api , и это пост в блоге об этом Google API теперь позволяет получать документы во многих форматах

Конечно, чтобы убедиться, что Google использует, вам нужен ответ от них? :)

удачи!

0 голосов
/ 28 ноября 2009

Ну ... это может быть просто инструмент pdf2xml, который использует Google. Они изменили только ширину, высоту слов и т. Д. И добавили атрибут p ... который оказывается атрибутом, содержащим координаты слов внутри строки. Просто поиграл с этим и узнал :) Собираетесь использовать этот pdf2xml от google: P Загрузите, пусть они конвертируют ... используйте xml для преобразования tooo ... epub? : P

0 голосов
/ 29 апреля 2009

Чтобы увидеть, из чего создается PDF, щелкните правой кнопкой мыши по нему и перейдите в Свойства документа (в Adobe Reader). Производитель PDF будет отображаться как «Производитель PDF». Я думаю, что Google использует и Prince и IText (не в комбинации для создания PDF-файлов). Google создал несколько основных модификаций вышеупомянутых наборов инструментов для создания этого конечного продукта.

0 голосов
/ 26 апреля 2009

Вы также можете изучить использование Lucence для индексирования этих больших файлов PDF и предоставления связанных страниц вашим пользователям.

См. http://www.jguru.com/faq/view.jsp?EID=1074237 для дополнительных идей.

...