Как найти и извлечь PDF-таблицу в файл excel на языке C# с помощью iTextSharp
Может ли кто-нибудь помочь мне извлечь PDF-таблицу и поместить ее в файл excel в надлежащем формате? Я использую библиотеку DLL iTextSharp.
Пространство имен
использование System.Text;
использование системы.ИО;
с помощью iTextSharp.текст;
с помощью iTextSharp.текст.формат PDF;
с помощью iTextSharp.текст.формат PDF.парсер;
Код
охраняемых недействительными ExportToExcel(объект отправителя, EventArgs в электронной)
{
если (это.fuPdfUpload.HasFile)
{
строковый файл = путь.GetFullPath(fuPdfUpload.PostedFile.имя файла);
this.ExportPDFToExcel(файл);
}
}
private void ExportPDFToExcel(строковое имя файла)
{
StringBuilder text = новый StringBuilder();
PdfReader pdfReader = новый PdfReader(имя файла);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new LocationTextExtractionStrategy();
строка currentText = PdfTextExtractor.GetTextFromPage(pdfReader, страница, стратегия);
currentText = Encoding.UTF8.GetString(кодировка.Преобразования(Кодирования.кодировка по умолчанию.Как utf8, кодировка.Кодировке utf8.GetBytes(currentText)));
текст.Добавить(currentText);
pdfReader.Закрывать();
}
Ответ.Четкий();
Ответ.Буфер = true;
Ответ.AddHeader("content-disposition", "attachment;filename=ReceiptExport.xls");
Ответ.Кодировка = "";
Ответ.Значение contentType = "применение/донгов.в MS-Excel с";
Ответ.Письменный текст);
Ответ.Промывать();
Ответ.Конец();
}
Этому вопросу уже больше года, и он уже решен. Ответы на старые сообщения могут привлечь downvotes.
Это решение было опубликовано по адресу http://aspforums.net/Threads/180443/Convert-a-PDF-File-to-Excel-File-using-iTextSharp-using-C-Net/[^- пару месяцев назад. Утверждение, что чужая работа является вашей собственной, также привлечет downvotes.
Во время итерации pdfReader возникнет проблема.Метод close() выдает ошибку что
System.ObjectDisposedExceptionвы должны написать эту команду close() как раз под итерацией for код должен быть таким:
protected void ExportToExcel(object sender, EventArgs e) { if (this.fuPdfUpload.HasFile) { string file = Path.GetFullPath(fuPdfUpload.PostedFile.FileName); this.ExportPDFToExcel(file); } } private void ExportPDFToExcel(string fileName) { StringBuilder text = new StringBuilder(); PdfReader pdfReader = new PdfReader(fileName); for (int page = 1; page <= pdfReader.NumberOfPages; page++) { ITextExtractionStrategy strategy = new LocationTextExtractionStrategy(); string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText))); text.Append(currentText); } pdfReader.Close(); Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=ReceiptExport.xls"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; Response.Write(text); Response.Flush(); Response.End(); }
Мой голос-1.
Причина в том, что ваш ответ не соответствует вопросу.
Там будет решение, и это неправильно, я просто хочу сказать, что есть ошибка, и я ее исправлю.
Это должен быть комментарий к решению 2 - вы должны были опубликовать его как комментарий или дать понять, что имеете в виду решение 1