2009-12-22 2 views

ответ

3

Ghostscript может делать то, что вам нужно. Ниже приведена команда для извлечения текста из файла в формате PDF в текстовый файл (вы можете запустить его из командной строки, чтобы проверить, работает ли он для вас):

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

Проверить здесь: codeproject: Convert PDF to Image Using Ghostscript API для получения подробной информации о том, как использовать Ghostscript с C#

+0

цистерны !!! он работает, но есть проблема, он не сохраняется в txt-файле, он просто создает его, и он остается пустым .. почему это не работает? Я запустил это так: C: \> C: \ gswin32.exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -d -c save -f ps2ascii.ps "C: \ New Folder \ 2 \ test. pdf "-c quit>" c: \ test.txt " – aharon

+0

, если вы запустили его так: gswin32.exe« C: \ New Folder \ 2 \ test.pdf »покажет вам файл? Также вы можете попробовать запустить его из папки bin gs, например: C: \ Program Files \ gs \ gs8.64 \ bin> gswin32c.exe .... в любом случае gs should дайте вам ошибку, если он не может найти \ parse ваш файл, PLS, опубликуйте его здесь, если вам не удастся преобразовать ваш файл. –

+0

Я попытался сделать: C: \ Program Files \ gs \ gs8.64 \ bin> gswin32 .exe "C: \ New Folder \ 2 \ test.pdf" , и программа сказала мне, что он не может разобрать файл (но он показал мне файл в формате pdf) , который является wierd, потому что когда я сделал gswin32 .exe -q -dNODISPLAY -dSAFER -dDELAYBIND -dWRITESYSTEMDICT -dSIMPLE -c save -f ps2ascii.ps "c: \ test.pdf"> "c: \ test.txt" он преобразовал его, единственная проблема заключается в том, что это креа т. е. файл, но не записывать в него .... это, по-видимому, работать в окнах? – aharon

0

Концепция конвертации PDF в текст на самом деле не прямолинейна, и вы не увидите, что кто-то разместил здесь код, который конвертирует PDF в текст прямо. Поэтому лучше всего использовать библиотеку, которая будет выполнять эту работу для вас ... хорошим является PDFBox, вы можете использовать его. Возможно, вы обнаружите, что написано в Java, но, к счастью, вы можете использовать IKVM, чтобы преобразовать его в .Net ....

1

в качестве альтернативы решения Дона там я нашел следующее:

Extract Text from PDF in C# (100% .NET)

+0

Я пробовал этот, и ссылка, предоставленная @Don, - гораздо лучшее преобразование. –

0

Docotic.Pdf library может извлечь текст из PDF-файлов (отформатированный или нет).

Вот пример кода, который показывает, как извлечь форматированный текст из файла PDF и сохранить его в другом файле.

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

Кроме того, есть образец на нашем сайте, который показывает другие варианты extraction of text from PDF files.

Отказ от ответственности: Я работаю над Bit Miracle, продавцом библиотеки.

+0

Но его простое преобразование. Мне нужно было конвертировать в статьи, так как файл PDF находится в макетах 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

Простое вставка некоторого кода не помогает. – mkl

+0

Думаю, здесь не слишком сложная вещь, которую нужно описать. –

+2

* Думаю, здесь не слишком сложная вещь, которую нужно описать.* - Ну, из коробки ваш код даже не компилируется по той простой причине, что вы не указали зависимости. Ни вопрос, ни ваш ответ не упоминаются в iTextSharp. Любой, кто не признает классы, о которых идет речь, будет немедленно потерян. Кроме того, у вас есть ненужные элементы кода, если OP хочет создать приложение командной строки, прослушиватели событий элемента GUI являются неуместными. В качестве хорошего примера рассмотрим ответ Бобровского, он упомянул о зависимости библиотеки и представил только ключевой код. – mkl

Смежные вопросы