39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
1

Как организовать работу PDF, чтоб он искал в PDF файле определенную строку

22.07.2014, 09:17. Показов 4247. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется код (Он всего лишь создает файл и текст, который указывается в форме)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
 
namespace PDFSharp
{
    public partial class PDFSharp : Form
    {
        public PDFSharp()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox1.Text == " " || textBox2.Text == " ")
            {
                MessageBox.Show("Не все поля были заполнены!");
            }
 
            else
            {
                FileStream reader = new FileStream(textBox1.Text, FileMode.Create);
                Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35);
                PdfWriter wri = PdfWriter.GetInstance(doc, reader);
                doc.Open();
                Paragraph paragraph = new Paragraph(textBox2.Text);
                doc.Add(paragraph);
                doc.Close();
 
                MessageBox.Show("Сгенерировано!");
            }
        }
    }
}
Как организовать работу PDF, чтоб он искал в PDF файле определенную строку, например ИНН и вывел ее значение?
Я использую библиотеку iTextSharp (как видно из объявления namespaces);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2014, 09:17
Ответы с готовыми решениями:

Как разместить PDF файлы в PDF файле
Есть PDF документ с одной страницей размера 700х500мм, и несколько PDF файлов. Нужно разместить...

Как создать PDF файл с именем ZAKAZ_(дата сегодня).pdf
Как создать из "Excel таблицы" - PDF файл с именем ZAKAZ_(дата сегодня).pdf при помощи макроса? ...

Как соединить несколько pdf файлов в один документ pdf?
имею распечатку книжки в 45 pdf файлах. как-то неудобно просматривать её. как их все объединить в...

Как разбить 1-ин pdf документ на множество pdf файлов в соответствии с регулярным выражением ?
Есть документ представляющий собой сборник статей тезисов (c рисунками) в двух формате pdf, задача...

6
674 / 420 / 44
Регистрация: 09.07.2012
Сообщений: 1,419
22.07.2014, 09:24 2
Нагуглилось
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
 
public string ReadPdfFile(string fileName)
{
    StringBuilder text = new StringBuilder();
 
    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);
 
            currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
            text.Append(currentText);
        }
        pdfReader.Close();
    }
    return text.ToString();
}
Поиск строки в страницах PDF
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public  List<int> ReadPdfFile(string fileName, String searthText)
            {
                List<int> pages = new List<int>();
                if (File.Exists(fileName))
                {
                    PdfReader pdfReader = new PdfReader(fileName);
                    for (int page = 1; page <= pdfReader.NumberOfPages; page++)
                    {
                        ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
 
                        string currentPageText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
                        if (currentPageText.Contains(searthText))
                        {
                            pages.Add(page);
                        }
                    }
                    pdfReader.Close();
                }
                return pages;
            }
1
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
22.07.2014, 10:23  [ТС] 3
Такс, спасибо.
Вот еще вопрос, я новичок в этом деле, эти фанки я вставил в программу, а как-нибудь их вызвать можно ?
0
674 / 420 / 44
Регистрация: 09.07.2012
Сообщений: 1,419
22.07.2014, 11:02 4
Надо прочитать книгу по C#, или посмотреть пару полных видео курсов. Просто такие вещи должны быть "вшиты".

Например первый пример вам больше подходит, передаете методу ReadPdfFile полный путь к вашему файлу.
В ответ он вам возвращает одну строку, в которой находится сразу весь текст со всех страниц файла.

В этой строке уже можете искать ИНН. Документ у вас маленький можно и так работать.

Но этот код тестовый, т.к. вместо string нужно использовать stringbuilder в методе ReadPdfFile.

Строку можете сохранить или вывести на консоль/окно. Проверить что работает, и найти там взглядом ИНН.
Если так, то переходим к этапу №2 - вынуть ИНН.
Для этого гуглим "C# как вынуть слово из строки" "C# как найти слово в строке" и т.д.
Примеров очень много.

Прочитать тут http://msdn.microsoft.com/ru-r... s.90).aspx, можно найти все что вам нужно.
1
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
22.07.2014, 12:25  [ТС] 5
Спасибо.
Но все-же, в C++ я вызывал функцию так:
C++
1
2
3
name_of_func(args /* if have */);
else
name_of_func();
Но в C# не получается так, в чем беда?

Добавлено через 1 час 2 минуты
С вызовом функции все нормально, разобрался

Добавлено через 14 минут
Остался вопрос с парсингом значения.
К примеру, имеется строка ИНН 999999999999999999
Вывести только 999999999999999999

Надеюсь на Вашу помощь, ребята!
0
674 / 420 / 44
Регистрация: 09.07.2012
Сообщений: 1,419
22.07.2014, 17:28 6
Ссылка чуть выше на http://msdn.microsoft.com/ru-r... s.90).aspx, если случайно ее открыть и прочитать то можно заметить код

C#
1
2
3
4
5
6
7
8
9
10
string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Substring(7, 2));
// Output: "C#"
 
System.Console.WriteLine(s3.Replace("C#", "Basic"));
// Output: "Visual Basic Express"
 
// Index values are zero-based
int index = s3.IndexOf("C");
// index = 7
Пробелов может быть больше чем 1, значит скидываем слово.... а ладно, сейчас напишу сам

C#
1
2
3
4
5
6
7
8
9
string a = "ИНН  999999999999999999"; // два пробела
            string inn = a.Replace("ИНН", "").Trim(); // trim - удаляет пробелы, ИНН заменяем на пустую строку.
            Console.WriteLine(inn);
//ИНН физического лица содержит 12 цифр - через IF можно проверять длину сразу, и выводить ошибку.
//ИНН юридического лица состоит из 10 цифр
 
//Если надо сложнее то можно:
а) использовать регулярные выражения (медленнее)
б) искать первое число в строке через int.tryparse, и как его нашли отсечь индекс до него, и взять оставшееся поле.
1
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
22.07.2014, 19:28  [ТС] 7
Я уже сам написал решение, только одна проблема осталась.
Не распознает contains компилятор , в чем беда? или какой нужен namespace для него?

Добавлено через 11 минут
Решено:
C#
1
using System.Linq;
0
22.07.2014, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2014, 19:28
Помогаю со студенческими работами здесь

Как сделать, чтоб pdf файл открывался , а не просто скачивался?
Я залил пдф файл на хостинг в папку проекта и указал его имя в разметке, при нажатии этот файл...

Как переделать макрос так, что бы после слияния Word создавал PDF и сохранял в PDF каждый раздел отдельно?
Добрый вечер всем! Помогите переделать макрос что бы после слияние, word создавал PDF и сохранял в...

Нужна java-программа для чтения электронных книг в формате PDF. Или как можно переделать PDF книгу в вордовский файл?
Нужна java- программа для чтения электронных книг в формате PDF. Нужна очень срочно прошу помощи...

Копирование объекта (файла PDF ) в определенную папку
День добрый всем! Проблема: 1) Есть файл со вставленными как объект PDF файлами. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru