Goran Bibic Ответов: 2

Читать pdf документ C#


Better soluton: ADVICE
 
1) Insert pdf in sql database and read 
or
2) Insert location in sql and read from file
 
I have many pdf files using azure

Misrosoft sql server 2017
 
Thanks


Что я уже пробовал:

Совет

I have many pdf files using azure

Misrosoft sql server 2017

2 Ответов

Рейтинг:
4

RickZeeland

Если у вас есть веб-сервер или облачное хранилище, вы можете хранить там свои pdf-файлы, а в базе данных SQL Server вы можете хранить только URL-адреса pdf-файлов.
Не пытайтесь сделать это с помощью Dropbox, теперь уже невозможно поделиться URL-адресами простым способом.
Если ваши файлы не слишком велики вы можете получить их следующим образом:

using(WebClient client = new WebClient()) {
   string s = client.DownloadString(url);
}


Goran Bibic

Google cloud 100 ГБ? Может быть, это решение?

RickZeeland

Это должно сработать, перейдите на Google Диск и нажмите кнопку "получить доступную ссылку".
Это будет выглядеть примерно так: https://drive.google.com/open?id=0B5ZQZ7etv3XpaEZpYlBXcUlOXYZ

Goran Bibic

Вставка местоположения файла в sql

querySaveStaff.Parameters.Add("@file_location", SqlDbType.VarChar, 255).Value = file_locationTextBox.Text;

Как получить файл из какого-то места?

Я пробую на datagrid изменения выбора, но не успешно



//byte[] bt;

пробовать
{
if (documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Значение != null)
{
//byte[] ap = (byte[])documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Ценность;
//MemoryStream ms = новый MemoryStream(ap);
////dataPictureBox.система визуализации.Рисование.Изображение.FromStream(МС);

//axAcroPDF1.src = локальное кодирование.GetString(ms.Метод toArray());








//использование (диалоговое окно openfiledialog ОФД = новое диалоговое окно openfiledialog()
//{
// ValidateNames = true, то функция = false, то фильтр = "формат PDF|*.формат PDF" }) {
// if (ofd.ShowDialog() == DialogResult.ОК)
// {
// bt = null;
//MemoryStream fs = новый MemoryStream(bt);
//bt = новый байт[fs.Длина];
// fs.Read(bt, 0, (id)fs.Длина);
// axAcroPDF1.src = локальное кодирование.Метода getString(ПС.Метод toArray());
//fs.Close();
// }
// }


StringBuilder text = новый StringBuilder();
// using (PdfReader reader = новый PdfReader("D:\\SPEDICIJA MERIDIJAN\\informacija\\SKM_28718052812170.pdf"))
использование (PdfReader reader = новый PdfReader("D:\\SPEDICIJA MERIDIJAN\\informacija\\SKM_28718052812170.pdf"))
{
for (int i = 1; i <= reader.NumberOfPages; i++)
{
текст.Добавить(PdfTextExtractor.GetTextFromPage(reader, i));
}
}
// Вы можете читать из текста.Метод toString();










//byte[] ap = (byte[])documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Ценность;
//string tempName = путь.Комбинат(Путь.GetTempPath(), Путь.GetRandomFileName() + ".формат PDF");
//Файл.WriteAllBytes(tempName, ap);
//axAcroPDF1.src = tempName;

}
еще {
axAcroPDF1.в src = нуль;
}
}
ловить
{
axAcroPDF1.в src = нуль;
}

Goran Bibic

Какая-то помощь?

Goran Bibic

Некоторые решения, такие как чтение из строкового пути(file_locationTextBox.Text)

RickZeeland

Чтобы читать с URL-адреса, попробуйте сделать следующее:
использование(WebClient client = новый WebClient()) {
строка s = клиент.DownloadString(url);
}

Goran Bibic

"C:\Users\test\Google Привод"

Может быть, так?

Поскольку у меня есть на каждом компьютере эта папка, я сначала сканирую документы в pdf в этой папке, а затем вставляю и читаю из приложения

RickZeeland

Это не сработает, это должен быть URL-адрес, если другие пользователи должны получить доступ к файлу.

Goran Bibic

ОК.Я попробую

Goran Bibic

Чтобы читать с URL-адреса, попробуйте сделать следующее:
использование(WebClient client = новый WebClient()) {
строка s = клиент.DownloadString(url);
}

Вместо URL используйте это

https://drive.google.com/open?id=0B5ZQZ7etv3XpaEZpYlBXcUlOXYZ

?

Рейтинг:
1

OriginalGriff

Все зависит от того, что вы с ним делаете и почему.

Нет никакого "лучшего решения" - некоторые будут лучше под эти обстоятельства, другие будут лучше под те Ни одно решение не будет соответствовать всем обстоятельствам.

Хранение PDF-файлов непосредственно в вашей БД имеет некоторые преимущества, но также может увеличить использование полосы пропускания, и это потенциально может замедлить работу SQL, а также, возможно, сделать файл базы данных SQL значительно больше со всеми вытекающими отсюда недостатками резервного копирования - но хранение местоположения означает, что каждая система, которая хочет получить данные, нуждается в доступе к этому общему местоположению, а также что вам нужно позаботиться о потенциальных конфликтах имен файлов: например, могут быть сотни документов под названием "Отчет".

Подумайте о том, чего именно вы пытаетесь достичь, и как документы должны обрабатываться в вашей системе в целом - тогда вы сможете принимать рациональные решения о том, как хранить вещи.


Goran Bibic

Вставка местоположения файла в sql

querySaveStaff.Parameters.Add("@file_location", SqlDbType.VarChar, 255).Value = file_locationTextBox.Text;

Как получить файл из какого-то места?

Я пробую на datagrid изменения выбора, но не успешно



//byte[] bt;

пробовать
{
if (documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Значение != null)
{
//byte[] ap = (byte[])documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Ценность;
//MemoryStream ms = новый MemoryStream(ap);
////dataPictureBox.система визуализации.Рисование.Изображение.FromStream(МС);

//axAcroPDF1.src = локальное кодирование.GetString(ms.Метод toArray());








//использование (диалоговое окно openfiledialog ОФД = новое диалоговое окно openfiledialog()
//{
// ValidateNames = true, то функция = false, то фильтр = "формат PDF|*.формат PDF" }) {
// if (ofd.ShowDialog() == DialogResult.ОК)
// {
// bt = null;
//MemoryStream fs = новый MemoryStream(bt);
//bt = новый байт[fs.Длина];
// fs.Read(bt, 0, (id)fs.Длина);
// axAcroPDF1.src = локальное кодирование.Метода getString(ПС.Метод toArray());
//fs.Close();
// }
// }


StringBuilder text = новый StringBuilder();
// using (PdfReader reader = новый PdfReader("D:\\SPEDICIJA MERIDIJAN\\informacija\\SKM_28718052812170.pdf"))
использование (PdfReader reader = новый PdfReader("D:\\SPEDICIJA MERIDIJAN\\informacija\\SKM_28718052812170.pdf"))
{
for (int i = 1; i <= reader.NumberOfPages; i++)
{
текст.Добавить(PdfTextExtractor.GetTextFromPage(reader, i));
}
}
// Вы можете читать из текста.Метод toString();










//byte[] ap = (byte[])documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Ценность;
//string tempName = путь.Комбинат(Путь.GetTempPath(), Путь.GetRandomFileName() + ".формат PDF");
//Файл.WriteAllBytes(tempName, ap);
//axAcroPDF1.src = tempName;

}
еще {
axAcroPDF1.в src = нуль;
}
}
ловить
{
axAcroPDF1.в src = нуль;
}

Goran Bibic

Какая-то помощь?

Goran Bibic

Некоторые решения, такие как чтение из строкового пути(file_locationTextBox.Text)