Esiste un modo affidabile per determinare se un PDF è stato generato da un file Powerpoint?

StackOverflow https://stackoverflow.com/questions/1622411

  •  06-07-2019
  •  | 
  •  

Domanda

Come dice il titolo. Il motivo per cui chiedo è che stiamo convertendo i PDF in testo ASCII formattato (usando pdftotext) e vogliamo solo visualizzare quelli che sembrano ragionevolmente sani.

I file PPT tendono ad avere testo su immagini, testo diagonale e altre cose che non si traducono molto bene in ASCII, quindi vorremmo filtrarli se possibile.

È stato utile?

Soluzione

L'applicazione di creazione di un PDF è elencata nei suoi metadati XMP. Puoi vederlo abbastanza facilmente in Acrobat 9 (e credo in precedenza): vai su File > Proprietà , fai clic su Metadati aggiuntivi ... , quindi vai su Avanzate ed è elencato in Proprietà core XMP e Proprietà PDF :

xmp:CreatorTool: Microsoft PowerPoint
pdf:Creator: Microsoft PowerPoint

Immagino che tu voglia trovarlo a livello di codice, quindi dovrai trovare una libreria per leggere questi metadati che funzionano con la tua lingua. Qui è un elenco di alcuni strumenti XMP.

Altri suggerimenti

Risposta breve:

No, non credo.

Risposta lunga:

No, non credo, perché ci sono modi per convertire un file PowerPoint in pdf, ad esempio Adobe Acrobat e PDFCreator e molti altri. Spetta ai convertitori incorporare informazioni specifiche nel file PDF, anche se trovi un modo per rilevare PDF di origine PowerPoint da un convertitore, lo stesso metodo potrebbe non funzionare per un altro.

Risposta ancora più lunga:

No, non credo, a causa dei motivi descritti nella "risposta lunga". E non credo che rilevare la fonte del PDF sia l'approccio migliore al problema che stai cercando di risolvere. Non solo PowerPoint produce testo e immagini sovrapposti. Penso che sia molto meglio rilevare il layout effettivo del file PDF. Se ci sono sovrapposizioni di immagini e testo, fai un po 'di filtraggio o pre-elaborazione per far fronte a questo.

Il tuo ragionamento è molto arbitrario: ci sono sicuramente molti file PPT senza le funzionalità che descrivi e molti file PDF con , che sono stati generati da un'altra fonte .

In teoria un metodo migliore sarebbe solo quello di rilevare quando questi "indesiderati". si verificano situazioni. Tuttavia, anche se il formato PDF è parzialmente aperto (solo per la lettura, apparentemente, quindi non è veramente un formato aperto), estrarre dati complessi come quello sarebbe incredibilmente difficile.

Tutti i PDF possono avere questo problema indipendentemente dalla loro fonte. La maggior parte delle suite di desktop publishing sono in grado di produrre PDF e sono spesso vendute con presentazioni PDF di alta qualità e più luminose ...

A " saner " metodo sarebbe quello di utilizzare un parser PDF, ITextSharp o pdfNet ... ecc., Utilizzando la libreria di tua scelta, trova tutti i rettangoli di immagine e tutti i rettangoli di testo, ORDINA I RETTANGOLI, e poi vedi se c'è una sostanziale sovrapposizione di testo e image rects - ignorando le sovrapposizioni di immagine in immagine. In tal caso, rifiuta la pagina e / o il documento.

Non sarà perfetto, ma almeno catturerà molti PDF che non sono sani, indipendentemente dalla fonte. Altre euristiche da aggiungere includono l'analisi del colore. (ovvero i colori nella zona di sovrapposizione sono sufficientemente diversi da consentire risultati "sani"?)

Buona fortuna a te

Potrebbe mettere il suo nome nelle informazioni sul creatore o sul produttore, ma non ho una copia con cui verificare questa teoria.

In generale, non è facile determinare in modo programmatico (affidabile) da dove proviene un file o come è stato generato in base al suo contenuto. Dopotutto, un file è solo una raccolta di bit.

A meno che tu non abbia molte risorse da spendere per costruire l'euristica per determinare se un file sembra "ragionevolmente sano" secondo le tue esigenze, lo considero un compito per gli esseri umani.

alcuni convertitori da ppt a pdf conservano il creatore nei commenti all'inizio del pdf.

Penso che i PDF generati dalla maggior parte delle applicazioni sembrano essere gli stessi. potrebbe avere alcuni meta-dati che puoi leggere dal file ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top