Мне нужно преобразовать файл .pdf в файл .txt (или .doc, но я предпочитаю .txt).Преобразование PDF-файла в текст в C#
Как это сделать на C#?
Мне нужно преобразовать файл .pdf в файл .txt (или .doc, но я предпочитаю .txt).Преобразование PDF-файла в текст в C#
Как это сделать на C#?
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#
Концепция конвертации PDF в текст на самом деле не прямолинейна, и вы не увидите, что кто-то разместил здесь код, который конвертирует PDF в текст прямо. Поэтому лучше всего использовать библиотеку, которая будет выполнять эту работу для вас ... хорошим является PDFBox, вы можете использовать его. Возможно, вы обнаружите, что написано в Java, но, к счастью, вы можете использовать IKVM, чтобы преобразовать его в .Net ....
Я была потребность себя, и я использовал эту статью, чтобы меня начал: http://www.codeproject.com/KB/string/pdf2text.aspx
в качестве альтернативы решения Дона там я нашел следующее:
Я пробовал этот, и ссылка, предоставленная @Don, - гораздо лучшее преобразование. –
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, продавцом библиотеки.
Но его простое преобразование. Мне нужно было конвертировать в статьи, так как файл PDF находится в макетах diffrentes ... – aharon
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);
}
}
}
}
Простое вставка некоторого кода не помогает. – mkl
Думаю, здесь не слишком сложная вещь, которую нужно описать. –
* Думаю, здесь не слишком сложная вещь, которую нужно описать.* - Ну, из коробки ваш код даже не компилируется по той простой причине, что вы не указали зависимости. Ни вопрос, ни ваш ответ не упоминаются в iTextSharp. Любой, кто не признает классы, о которых идет речь, будет немедленно потерян. Кроме того, у вас есть ненужные элементы кода, если OP хочет создать приложение командной строки, прослушиватели событий элемента GUI являются неуместными. В качестве хорошего примера рассмотрим ответ Бобровского, он упомянул о зависимости библиотеки и представил только ключевой код. – mkl
цистерны !!! он работает, но есть проблема, он не сохраняется в 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
, если вы запустили его так: gswin32.exe« C: \ New Folder \ 2 \ test.pdf »покажет вам файл? Также вы можете попробовать запустить его из папки bin gs, например: C: \ Program Files \ gs \ gs8.64 \ bin> gswin32c.exe .... в любом случае gs should дайте вам ошибку, если он не может найти \ parse ваш файл, PLS, опубликуйте его здесь, если вам не удастся преобразовать ваш файл. –
Я попытался сделать: 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