2009-12-22 15 views

Antwort

3

Ghostscript könnte tun, was Sie brauchen. Unten ist ein Befehl Text aus einer PDF-Datei in eine txt-Datei zum Extrahieren (Sie es von einer Befehlszeile ausführen können, um zu testen, ob es für Sie arbeitet):

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

prüfen: codeproject: Convert PDF to Image Using Ghostscript API Einzelheiten über die Verwendung von ghost mit C#

+0

tanks !!! es funktioniert, aber es gibt ein Problem, es ist nicht speichern in der TXT-Datei, es ist nur zu erstellen, und es ist leer bleiben..warum ist es nicht funktioniert? i runned es wie folgt aus: C: \> C: \ gswin32.exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -d -c speichern -f ps2ascii.ps „C: \ Neuer Ordner \ 2 \ test. pdf "-c quit>" c: \ test.txt " – aharon

+0

Wenn Sie es so ausführen würden: gswin32.exe" C: \ Neuer Ordner \ 2 \ test.pdf "zeigt es Ihnen die Datei? auch möchten Sie vielleicht versuchen, es aus dem Ordner bin der GS ausführen, etw so: C: \ Programme \ gs \ gs8.64 \ bin> gswin32c.exe .... auf jeden Fall sollte gs geben Sie einen Fehler, wenn es nicht finden \ parse Ihre Datei, pls, posten Sie es hier, wenn immer noch kein Glück, Ihre Datei konvertieren –

+0

Ich habe versucht zu tun: C: \ Programme \ gs \ gs8.64 \ bin> gswin32 .exe "C: \ Neuer Ordner \ 2 \ test.pdf" und das Programm hat mir gesagt, dass es die Datei nicht parsen kann (aber es zeigte mir die PDF-Datei) was seltsam ist, denn wenn ich das tat gswin32 .exe -q -dNODISPLAY -dSAFER -dELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c Speichern -f ps2ascii.ps "c: \ test.pdf"> "c: \ test.txt" es hat es konvertiert, das einzige Problem ist das es ist krea Tue die Datei aber schreibe nicht hinein .... soll das in Windows funktionieren? – aharon

0

Das Konzept der Umwandlung von PDF in Text ist nicht wirklich geradlinig und Sie werden niemanden sehen, der hier einen Code veröffentlicht, der PDF in Text konvertiert. Also ist es am besten, eine Bibliothek zu verwenden, die den Job für Sie erledigt ... ein guter ist PDFBox, Sie können es googeln. Sie finden es wahrscheinlich in Java geschrieben, aber zum Glück können Sie IKVM verwenden, um es .Net zu konvertieren ....

0

Docotic.Pdf library können Text aus PDF-Dateien extrahieren (formatiert oder nicht).

Hier ist ein Beispielcode, der zeigt, wie man formatierten Text aus einer PDF-Datei extrahiert und in einer anderen Datei speichert.

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

Außerdem gibt es eine Probe auf unserer Website, die für extraction of text from PDF files andere Optionen zeigt.

Haftungsausschluss: Ich arbeite für Bit Miracle, Anbieter der Bibliothek.

+0

Aber es ist eine einfache Umwandlung. Ich wurde zu Artikeln gebraucht, in denen die PDF-Datei in verschiedenen Layouts war ... – 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

Das Einfügen von Code ist nicht hilfreich. – mkl

+0

Ich denke hier nicht zu viel schweres Ding, das beschrieben werden muss. –

+2

* Ich denke hier nicht zu viel schwierige Sache, die beschrieben werden muss.* - Nun, aus der Box kompiliert Ihr Code nicht einmal aus dem einfachen Grund, dass Sie die Abhängigkeiten nicht erwähnt haben. Weder die Frage noch deine Antwort erwähnen iTextSharp. Wer die fraglichen Klassen nicht erkennt, wird sofort verloren gehen. Darüber hinaus verfügen Sie über unnötige Codeelemente. Wenn das OP eine Befehlszeilenanwendung erstellen möchte, sind Ereignislistener für das GUI-Element ungeeignet. Als gutes Beispiel betrachten wir @ Bobrovskys Antwort, er erwähnte beide die Abhängigkeit von der Bibliothek und präsentierte nur den zentralen Code. – mkl

Verwandte Themen