2009-12-22 4 views

Répondre

3

Ghostscript pourrait faire ce dont vous avez besoin. Voici une commande pour extraire le texte d'un fichier PDF dans un fichier txt (vous pouvez l'exécuter à partir d'une ligne de commande pour vérifier si cela fonctionne pour vous):

gswin32c.exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c save -f ps2ascii.ps "test.pdf" -c quit >"test.txt" 

Vérifiez ici: codeproject: Convert PDF to Image Using Ghostscript API pour plus de détails sur l'utilisation de Ghostscript avec C#

+0

réservoirs !!! cela fonctionne, mais il y a un problème, ce n'est pas l'enregistrement dans le fichier txt, il suffit de le créer et il reste vide .. pourquoi n'est-ce pas le travail? je l'ai couru comme ça: C: \> C: \ gswin32.exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -d -c sauvegarder -f ps2ascii.ps "C: \ Nouveau dossier \ 2 \ test. pdf "-c quit" "c: \ test.txt" – aharon

+0

si vous voulez l'exécuter comme ceci: gswin32.exe "C: \ Nouveau dossier \ 2 \ test.pdf" vous montrera-t-il le fichier? aussi vous pouvez essayer de l'exécuter à partir du dossier bin de la gs, comme ceci: C: \ Program Files \ gs \ gs8.64 \ bin> gswin32c.exe .... en tout cas gs devrait vous donner une erreur si elle ne peut pas trouver \ analyser votre fichier, pls, l'afficher ici si toujours pas de chance convertir votre fichier –

+0

j'ai essayé de faire: C: \ Program Files \ gs \ gs8.64 \ bin> gswin32 .exe "C: \ Nouveau dossier \ 2 \ test.pdf" et le programme m'a dit qu'il ne peut pas analyser le fichier (mais il m'a montré le fichier pdf) qui est bizarre, parce que quand je l'ai fait gswin32 .exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c sauvegarde -f ps2ascii.ps "c: \ test.pdf"> "c: \ test.txt" il l'a converti, le seul problème est que ça crea te le dossier mais n'écris pas dedans .... est-ce supposé fonctionner dans des fenêtres? – aharon

0

Le concept de conversion de PDF en texte n'est pas vraiment simple et vous ne verrez jamais quelqu'un publier un code ici qui va convertir PDF en texte directement. Donc, votre meilleur pari maintenant est d'utiliser une bibliothèque qui ferait le travail pour vous ... un bon est PDFBox, vous pouvez le google. Vous trouverez sans doute écrit en Java, mais vous pouvez heureusement utiliser IKVM pour le convertir en .Net ....

0

Docotic.Pdf library peut extraire du texte à partir de fichiers PDF (format ou non).

Voici un exemple de code qui montre comment extraire du texte formaté à partir d'un fichier PDF et l'enregistrer dans un autre fichier.

public static void ExtractFormattedText(string pdfFile, string textFile) 
{ 
    using (PdfDocument doc = new PdfDocument(pdfFile)) 
    { 
     string text = doc.GetTextWithFormatting(); 
     File.WriteAllText(textFile, text); 
    } 
} 

En outre, il y a un échantillon sur notre site qui montre d'autres options pour extraction of text from PDF files. Clause de non-responsabilité: Je travaille pour Bit Miracle, vendeur de la bibliothèque.

+0

Mais c'est une simple conversion. Je devais converser aux articles où le fichier PDF est dans les mises en page diffrentes ... – aharon

0
public void PDF_TEXT() 
    { 
     richTextBox1.Text = string.Empty; 

     ReadPdfFile(@"C:\Myfile.pdf"); //read pdf file from location 
    } 


    public void ReadPdfFile(string fileName) 
    { 

string strText = string.Empty; 
StringBuilder text = new StringBuilder(); 
    try 
    { 
    PdfReader reader = new PdfReader((string)fileName); 
    if (File.Exists(fileName)) 
    { 
    PdfReader pdfReader = new PdfReader(fileName); 

    for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
     { 

ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 

string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 

      text.Append(currentText); 

       } 
       pdfReader.Close(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     richTextBox1.Text = text.ToString(); 

    } 



    private void Save_TextFile_Click(object sender, EventArgs e) 
    { 
     SaveFileDialog sfd = new SaveFileDialog(); 

     DialogResult messageResult = MessageBox.Show("Save this file into Text?", "Text File", MessageBoxButtons.OKCancel); 

     if (messageResult == DialogResult.Cancel) 
     { 

     } 
     else 
     { 
      sfd.Title = "Save As Textfile"; 
      sfd.InitialDirectory = @"C:\"; 
      sfd.Filter = "TextDocuments|*.txt"; 


      if (sfd.ShowDialog() == DialogResult.OK) 
      { 
       if (richTextBox1.Text != "") 
       { 
        richTextBox1.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText); 
        richTextBox1.Text = ""; 
        MessageBox.Show("Text Saved Succesfully", "Text File"); 

       } 
       else 
       { 
        MessageBox.Show("Please Upload Your Pdf", "Text File", 
        MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); 
       } 

      } 

     } 

    } 
+1

Il suffit de coller du code n'est pas utile. – mkl

+0

Je pense ici pas trop de chose difficile qui doit être décrite. –

+2

* Je pense ici pas trop de chose difficile qui doit être décrite.* - Eh bien, hors de la boîte, votre code ne compile même pas pour la simple raison que vous n'avez pas mentionné les dépendances. Ni la question ni votre réponse ne mentionnent iTextSharp. Toute personne ne reconnaissant pas les classes en question sera instantanément perdue. De plus, vous avez des éléments de code inutiles, si l'OP veut créer une application en ligne de commande, les écouteurs d'événement d'élément GUI sont inappropriés. Comme un bon exemple, regardez la réponse de Bobrovsky, il a mentionné la dépendance de la bibliothèque et a présenté seulement le code pivot. – mkl