2009-12-22 3 views

risposta

3

Ghostscript potrebbe fare quello che ti serve. Di seguito è riportato un comando per l'estrazione di testo da un file PDF in un file txt (è possibile eseguire da una riga di comando per verificare se funziona per voi):

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

Controllare qui: codeproject: Convert PDF to Image Using Ghostscript API per i dettagli su come utilizzare ghostscript con C#

+0

serbatoi !!! funziona, ma c'è un problema, non salva nel file txt, lo crea e rimane vuoto ... perché non funziona? l'ho eseguito in questo modo: C: \> C: \ gswin32.exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -d -c salva -f ps2ascii.ps "C: \ Nuova cartella \ 2 \ test. pdf "-c quit>" c: \ test.txt " – aharon

+0

se lo si esegue in questo modo: gswin32.exe" C: \ New Folder \ 2 \ test.pdf "mostrerà il file? anche si potrebbe voler provare a eseguirlo dalla cartella bin del gs, smth come questo: C: \ Programmi \ gs \ gs8.64 \ bin> gswin32c.exe .... in ogni caso gs dovrebbe darti un errore se non riesce a trovare \ parse il tuo file, pls, postalo quassù se ancora non ti interessa convertire il tuo file –

+0

ho provato a fare: C: \ Programmi \ gs \ gs8.64 \ bin> gswin32 .exe "C: \ New Folder \ 2 \ test.pdf" e il programma mi ha detto che non può analizzare il file (ma mi ha mostrato il file pdf) che è strano, perché quando ho fatto gswin32 .exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c save -f ps2ascii.ps "c: \ test.pdf"> "c: \ test.txt" lo ha convertito, l'unico problema è che crea il file ma non scrivere in esso .... è questo supponiamo di lavorare in Windows? – aharon

0

Il concetto di conversione di PDF in testo non è molto semplice e non vedrete nessuno che pubblichi un codice qui che convertirà il PDF in testo diritto. Quindi la soluzione migliore è usare una libreria che faccia il lavoro per te ... una buona cosa è PDFBox, puoi farlo su Google. Probabilmente troverete scritto in Java, ma fortunatamente è possibile utilizzare IKVM per convertirlo in .Net ....

0

Docotic.Pdf library può estrarre il testo da file PDF (formattata o meno).

Ecco un esempio di codice che mostra come estrarre il testo formattato da un file PDF e salvarlo in un altro file.

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

Inoltre, v'è un campione sul nostro sito che mostra altre opzioni per extraction of text from PDF files.

Disclaimer: Lavoro per Bit Miracle, venditore della biblioteca.

+0

Ma è una semplice conversione. Avevo bisogno di conversare con gli articoli in cui il file PDF è in layout 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

Basta incollare del codice non utile. – mkl

+0

Penso che qui non sia una cosa troppo difficile da descrivere. –

+2

* Penso che qui non sia una cosa troppo difficile da descrivere.* - Bene, fuori dalla scatola il tuo codice non viene nemmeno compilato per il semplice motivo che non hai menzionato le dipendenze. Né la domanda né la tua risposta menzionano iTextSharp. Chiunque non riconosca le classi in questione verrà immediatamente perso. Inoltre hai elementi di codice non necessari, se l'OP vuole creare un'applicazione a riga di comando, gli ascoltatori di eventi dell'elemento GUI sono inappropriati. Come buon esempio, la risposta di @ Bobrovsky ha menzionato la dipendenza della libreria e ha presentato solo un codice chiave. – mkl