Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
1
.NET 4.x

Как вытащить из Access PDF-файлы, и открыть их

12.05.2015, 09:20. Показов 1618. Ответов 12
Метки нет (Все метки)

На данном этапе сойдет и просто кнопка по нажатию которой откроются все файлы PDF вытащенные из ACCESS Под словом откроются понимаю через стандартную программу которая стоит на кампьюторе для просмотра PDF(так как внедрить в программу Подключить компонент PDF Viewer надо еще подумать, а пока хочется чтобы что то уже можно было вытащить из бд и уже хоть как то работать).

Я просто даже пока не знаю как вытащить из БД в какую именно переменную.

C#
1
2
3
4
5
6
7
8
9
10
  command.CommandText = a;
                command.CommandType = CommandType.Text;
                connection.Open();
 
                OleDbDataReader reader = command.ExecuteReader();
 
                while (reader.Read())
                {
                   reader[Картинка];// к чему её прировнять и что дальше делать
                }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2015, 09:20
Ответы с готовыми решениями:

Не могу открыть в PDF читалке в форме PDF файл имя которого хранится в БД Access
в приложении есть поиск он ищет в БД(1 таблица, 2 поля) и если в поисковую строку вводится название...

Как открыть определенный файл PDF из Access
Добрый день! Похожую тему уже создавал, но обсуждение куда то в сторону ушло, говорилось больше про...

Не могу открыть файлы Word, jpeg, pdf - файлы повреждены
Помогите, пожалуйста, по-глупости словила вирус. Теперь не открываются файлы Word, jpeg, pdf, пишет...

Чем открыть файлы PDF в mac os snow leopard 10.6.2?
Друзья, помогите, Чем открыть файлы PDF в mac os snow leopard 10.6.2? Какую версию скачать ADOBE...

12
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
12.05.2015, 10:15 2
КВА696, ну смотря какой тип в бд. Судя по коду у вас картинка , запихивайте ее в массив байтов и зачем читайте MemoryStreamом
1
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
12.05.2015, 14:07  [ТС] 3
Цитата Сообщение от jecus Посмотреть сообщение
ну смотря какой тип в бд.
об этом вопрос .accdb или какой тип данного в аксесе (Вложение),

Цитата Сообщение от jecus Посмотреть сообщение
Судя по коду у вас картинка
Тут не понял есть еще разница какой PDF? просто у нас 2 вида PDF один это отсканированный вариант(получается картинка) а второй это ПДФ чертеж сделанный программой типо Компос 3 д(тут вроди как я понял уже не совсем кортинкой текст в этом пдф отдельно от чертежа) если надо привести пример могу скинуть

Добавлено через 1 минуту
Цитата Сообщение от jecus Посмотреть сообщение
MemoryStreamом
Это что то типо об это
C#
1
2
3
Bitmap bmp;
using (var ms = new MemoryStream(imageBytes))
   bmp = Bitmap.FromStream(ms) as Bitmap;
Добавлено через 3 часа 21 минуту
Тем самым должно получиться что то в этом роде?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
byte[] file = File.ReadAllBytes(reader[Картинка]);
 
MemoryStream filecontent = null;
 
filecontent =file;//CommonUtility.ExportToPdf(inputXMLtoXSLT);(This will be your MemeoryStream Content)
 
Response.ContentType = "image/pdf";
 
string headerValue = string.Format("attachment; filename={0}", formName.ToUpper() + ".pdf");
 
Response.AppendHeader("Content-Disposition", headerValue);
 
filecontent.WriteTo(Response.OutputStream);
 
Response.End();
Добавлено через 1 минуту
вот только что за функция formName.ToUpper()

FormName is the fileName given,This code will make the generated PDF file downloadable by invoking a PopUp.
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
14.05.2015, 12:13  [ТС] 4
Нашол то что мне надо для открытия вот только вопрос как достать из базы картинку саму?

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
            OleDbConnection connection;
            OleDbCommand command;
            connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Ptb-05\Base\Base.accdb;");
            command = connection.CreateCommand();
 
            command.CommandText = "select * from Деталь WHERE Обозначение='ГПВК-50'";
            command.CommandType = CommandType.Text;
            connection.Open();
 
            string pati = "";
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
 
               pati = reader["Чертеж"];// собствеено тут и есть вопрос как из базы дастать? здесь лежит PDF фаил, 
 
 
               proc.StartInfo.FileName = pati;
               proc.StartInfo.WorkingDirectory = pati;
               proc.Start();
 
            }
 
            proc.WaitForExit();
0
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
14.05.2015, 20:02 5
КВА696, проект прилепи я завтра гляну
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
14.05.2015, 20:22  [ТС] 6
jecus,
я щаз решил из граблей сделать. Фаил перевести в титы их засунуть в базу а потом из базы вытащить перевести в биты и создать фаил, осталось только проблемма перевода все варианты перебрал ни один перевод из байта в стринг не записывается в базу


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
byte[] werf = System.IO.File.ReadAllBytes("D:\\2.pdf");
 
            Database dfv = new Database();
            dfv.InsSelDel("UPDATE Деталь SET Чертеж1='" + CollectionToString(werf) + "' WHERE Обозначение='ГПВК-50'");
 
 
 
 
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            OleDbConnection connection;
            OleDbCommand command;
            connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "Base/Base.accdb;Jet OLEDB:Database Password=369о;");
            command = connection.CreateCommand();
            command.CommandText = "select * from Деталь WHERE Обозначение='ГПВК-50'";
            command.CommandType = CommandType.Text;
            connection.Open();
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                byte[] куа = StringToCollection(reader["Чертеж1"].ToString());
               // создал каталог
                DirectoryInfo di = Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "temp");
               //cj[hfytybt 
 
                using (MemoryStream memst = new MemoryStream(куа))
                {
                    using (FileStream file = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "temp/1.pdf", FileMode.Create, System.IO.FileAccess.Write))
                    {
                        file.Write(куа, 0, куа.Length);
                    }
                }
            }
            connection.Close();
        }
Добавлено через 1 минуту
я уже и им пользовался string s = System.Text.ASCIIEncoding.UTF7.GetString(werf); не помогло постоя dfv.InsSelDel("UPDATE Деталь SET Чертеж1='" + CollectionToString(werf) + "' WHERE Обозначение='ГПВК-50'");нна тут ошибка а если напишу какое нить слово то нормально изменяется в базе

Добавлено через 1 минуту
Или это не лучший вариант, просто инет перерыл ни кто не советует сохранять в базе документы тем болие в аксесе во вкладке вложение
0
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
14.05.2015, 20:23 7
КВА696, так вы в базу и так в байтах же загружаете.Тогда какие проблемы просто считывайте в массив байтов и дальше делайте с ними что угодно

Добавлено через 51 секунду
честно с Access не работал говорить не буду
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
14.05.2015, 20:24  [ТС] 8
А держать пдф файлы вне базы в районе 10 000 шт как то не охото

Добавлено через 1 минуту
jecus, вот сейчас и возникла проблема не могу записать в базу байтовое содержание выдает ошибку
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
14.05.2015, 20:26  [ТС] 9
Как вытащить из Access PDF-файлы, и открыть их
Это при вот этом коде

C#
1
2
3
4
5
6
byte[] werf = System.IO.File.ReadAllBytes("D:\\2.pdf");
            string s = System.Text.ASCIIEncoding.UTF7.GetString(werf);
            
           
           Database dfv = new Database();
            dfv.InsSelDel("UPDATE Деталь SET Чертеж1='" + s + "' WHERE Обозначение='ГПВК-50'");
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
14.05.2015, 20:41  [ТС] 10
Как вытащить из Access PDF-файлы, и открыть их


не могла ли ошибка возникнуть из за первой кавычки
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
14.05.2015, 22:15  [ТС] 11
В итоге пока что запись в базу не идет((( выдает ошибку выше показаную


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
 byte[] werf = System.IO.File.ReadAllBytes("D:\\2.pdf");
            string str = System.Text.Encoding.GetEncoding(1251).GetString(werf);
           
           Database dfv = new Database();
           dfv.InsSelDel("UPDATE Деталь SET Чертеж1='" + str + "' WHERE Обозначение='ГПВК-50'");
 
 
 
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            OleDbConnection connection;
            OleDbCommand command;
            connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "Base/Base.accdb;Jet OLEDB:Database Password=369о;");
            command = connection.CreateCommand();
            command.CommandText = "select * from Деталь WHERE Обозначение='ГПВК-50'";
            command.CommandType = CommandType.Text;
            connection.Open();
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                byte[] куа = System.Text.Encoding.GetEncoding(1251).GetBytes(reader["Чертеж1"].ToString());
               // создал каталог
                DirectoryInfo di = Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "temp");
               //cj[hfytybt 
 
                using (MemoryStream memst = new MemoryStream(куа))
                {
                    using (FileStream file = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "temp/1.pdf", FileMode.Create, System.IO.FileAccess.Write))
                    {
                        file.Write(куа, 0, куа.Length);
                    }
                }
            }
            connection.Close();
Добавлено через 20 минут
Нашел ошибку в аксес в поле Длинный текст все равно какое то ограничение по тексту. Придется ломать голову дальше
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
15.05.2015, 08:00  [ТС] 12
jecus,Вот проект может вы или кто нить знает как вытащить из аксеса с типом вложение фаил

WpfApplication1.7z
0
95 / 46 / 13
Регистрация: 20.04.2014
Сообщений: 687
15.05.2015, 09:48  [ТС] 13
и как его еще загрузить в базу.

Добавлено через 1 час 29 минут
Помоему нашел ответ Вложение Attach в Access 2007 accdb. Как его добавить в БД
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2015, 09:48

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как открыть PDF файл
Добрый день. Только начал изучать Android программирование. Возникла такая проблема, не могу...

Как открыть .pdf файл?
Компонент CppWebBrowser требует Acrobat Reader. Но неудобно же устанавливать его у каждого...

Как открыть pdf-файл
Как из вба, нажатием на кнопку, открыть документ в формате пдф

Как открыть файл pdf
Как открыть файл pdf My.Computer.FileSystem.OpenTextFileReader("PDF\111.pdf") файл не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.