2010-11-08 20 views
0

J'ai un tableau d'octets pdf et je me demandais s'il y avait un moyen facile de lire la première ligne de texte dans une variable?pdf byte array lire en première ligne

Merci, tige

+0

Je n'en ai aucune idée, mais je pense que j'aurais plus de chance de demander directement aux gens derrière iText si c'est possible avec leur produit. –

+0

De ma connaissance minimale du format PDF, je peux vous dire que lire la première ligne de texte nécessite d'abord de lire/analyser le texte. – Vercas

Répondre

1

Check out "SimpleTextParser" et le reste du paquet com.itextpdf.text.pdf.parser (ou quel que soit son appelé en C# -ville). Notez que "La première ligne de texte" est un concept très glissant en format PDF. Les glyphes sont dessinés à des coordonnées spécifiques. Si un groupe de glyphes donné partage une ligne de base, ils sont visuellement sur la même ligne. Si une ligne de base partagée est la plus proche du haut de la page, c'est la "première". Oh, et la page pourrait être tournée, jetant tout dans un genre spécial d'enfer appelé "matrice mathématique".

Il n'est pas nécessaire d'écrire du texte au format PDF dans un ordre logique. On pourrait passer et écrire tous les 'a, puis les' b ', et ainsi de suite. Pas sanglant probable (ou efficace), mais parfaitement légal. Ce qui EST probable, c'est que tout le texte d'une police donnée est dessiné, suivi par tout le texte de la police suivante, et ainsi de suite. Si la première ligne de texte se trouve dans deux polices différentes (gras, italique, etc.), il se peut que vous trouviez plus difficile de trouver la bonne ligne de texte. Un programme peut facilement parcourir les polices alphabétiquement, ou les stocker dans une carte de hachage ... ne dépendez pas de l'ordre logique pour correspondre à "l'ordre des choses sont dessinés". Tôt ou tard (probablement plus tôt) vous serez dans un choc grossier.

Je vous suggère d'aller lire une FAQ iText ou deux. Votre question trahit un niveau d'ignorance qui se guérit facilement avec un petit effort de votre part. Si rien d'autre, les chapitres librement disponibles de iText In Action (et sa corne d'abondance d'échantillons) devraient éclairer.

+0

Et tout ce qui suppose que le texte de votre PDF est vraiment du texte. Il peut s'agir de glyphes non mappés (sans «collection de gribouillis» à des informations «caractère»), d'un bitmap ou d'un dessin au trait. Si tel est le cas, vous êtes pratiquement bloqué avec OCR (qui devrait au moins vous donner le texte dans un ordre rationnel). Si vous pouvez sélectionner, copier et coller à partir d'Acrobat/Reader, il est probable que vous puissiez extraire le texte avec iText. Sinon, vous êtes à peu près condamné. –

0
byte[] pdf; 
BufferedReader in = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(pdf))); 
String firstLine = in.readLine(); 
in.close(); 
+0

Ce n'est probablement pas ce qu'il cherche :) –

+0

Oh ... peut-être que je devrais le retageler à "Java" donc ma réponse correspond mieux :) – Daniel

+0

Oh 2! Je pensais qu'il voulait lire la première ligne du tableau d'octets pour déterminer la version PDF ... Pas la première ligne du texte du PDF. – Daniel