2009-04-25 11 views
5

Ho guardato il traffico quando google visualizza allegati PDF in gmail in una nuova finestra. Il contenuto è servito come immagini PNG per ogni pagina PDF. E il suo testo può essere selezionato. Che cosa utilizza google sul lato server per generare un file PNG per una determinata pagina in un file pdf? Come funziona la selezione del testo su un file PNG? Qualche idea?Quale applicazione utilizza google per mostrare allegati PDF in gmail

risposta

7

Per impostazione predefinita gli allegati vengono visualizzati in modo sicuro utilizzando https://docs.google.com/gview, tuttavia risulta che è possibile richiedere file su HTTP semplice. Questo rende un po 'più facile capire cosa sta succedendo usando Wireshark.

Come hai indicato era già chiaro che il PDF è convertito sul lato server in un PNG (ImageMagick è davvero una soluzione ragionevole per questo scopo), il motivo ovvio per questo è quello di preservare il layout esatto pur essendo in grado per visualizzare il file senza richiedere un visualizzatore PDF.

Tuttavia, guardando il traffico ho scoperto che l'intero PDF viene anche convertito in un formato XML personalizzato al momento della chiamata/gview? A = gt & docid = & chan = & thid = (questo è fatto il più presto si richiede il documento). Poiché non ho potuto utilizzare Wireshark per copiare l'XML, ho fatto ricorso all'estensione di Firefox Live HTTP Headers. Ecco un estratto:

<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> 

Io non sono molto sicuro ancora quello che tutti gli attributi l'elemento di testo rappresentano (con l'eccezione di w e h) ma sono, ovviamente, le coordinate del testo e, eventualmente, la lunghezza . Come the JavaScript Google uses is minimized (o forse obsfuscated, ma non è probabile), capire esattamente come funziona la funzione di selezione lato client non è così facile. Ma molto probabilmente utilizza questo file XML per capire quale testo l'utente sta guardando e poi lo copia negli appunti dell'utente.

Si noti che esiste uno strumento open source (con licenza GPL) denominato pdf2xml che ha un output simile ma non del tutto identico.Ecco l'esempio da loro homepage:

<?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> 

auguriamo che queste informazioni è in alcun modo utile, ma come uno degli altri manifesti menzionato l'unico modo per essere sicuro di quello che Google fa è chiedendo loro. È un peccato che Google non abbia un canale IRC ufficiale, ma hanno lo a forum for Google Docs support questions.

Buona fortuna.

+0

Immagino che io rimango in alto ea sinistra. Google inoltre non ha bisogno di dati sui font man mano che il font viene reso all'interno di PNG. Quindi pdf2xml è probabilmente il generatore, ma in seguito l'XML è stato analizzato e alcuni dati sono stati rimossi. –

1

se avete il testo si può fare ciò che si vuole offcourse,

più specifica si dovrebbe verificare questo link: pdf to png using php

così ImageMagick sarà necessario imageMagic

edit: un'altra interesting link .

edit: ho trovato questo a Google, sembra interessante ... così si potrebbe utilizzare l'API di Google Google Document List Data Api e questo è un blogpost su di esso Google API Now Lets You Get Documents in Many Formats

Offcourse per essere sicuro di quello che Google utilizza avete bisogno di una risposta da loro ? :)

buona fortuna!

+0

Ciao, grazie per la risposta. I collegamenti sono decisamente interessanti. Ho questi Big PDF (~ 50 Mb) come input per il mio processo e questi devono essere offerti ai client con connessioni lente. Tuttavia, i clienti possono aver bisogno solo di poche pagine per prendere la decisione. Quindi, stavamo pensando in termini di portare solo un'istantanea di un pdf proprio come fa Google. Abbiamo bisogno di un qualche tipo di prodotto aziendale che possa aiutarci a farlo. Prevalentemente java. Questo non è esattamente così ma utile. Alcuni altri indizi che ho sono .. http://www.jpedal.org/, iText Varun – varun

2

Google utilizza un'applicazione di conversione PDF non open source sviluppata internamente. Quindi è meglio esaminare i link pubblicati da altre risposte, dato che non puoi mettere le mani sulla versione di Google. Scusate!

0

Per vedere con cosa viene creato un file PDF, fare clic con il pulsante destro del mouse e accedere a Proprietà documento (nel lettore Adobe). Il produttore PDF verrà visualizzato come "PDF Producer". Penso che Google utilizzi sia Prince e IText (non in combinazione per la creazione di PDF). Google ha creato alcune importanti modifiche sui toolkit sopra per creare quel prodotto finale.

-2

Bene .. questo potrebbe essere solo lo strumento pdf2xml utilizzato da Google. Hanno solo cambiato le parole complete larghezza, altezza ecc e hanno aggiunto l'attributo p ... che si rivela essere l'attributo contenente le coordinate per le parole all'interno della linea. Ho appena giocato con esso e ho scoperto :) Usando questo pdf2xml da google: P Upload, lascia che si convertano ... usa xml per trasformare tooo ... epub? : P

+0

Penso che dovresti provare a capire la domanda prima. –

Problemi correlati