2023-08-28 15:24:43 +00:00
|
|
|
using UglyToad.PdfPig;
|
|
|
|
|
using UglyToad.PdfPig.Content;
|
|
|
|
|
|
2023-09-06 12:58:02 +00:00
|
|
|
namespace BotSharp.Plugin.KnowledgeBase.Services;
|
2023-08-28 15:24:43 +00:00
|
|
|
|
|
|
|
|
public class PigPdf2TextConverter : IPdf2TextConverter
|
|
|
|
|
{
|
2023-12-30 03:54:41 +00:00
|
|
|
public async Task<string> ConvertPdfToText(string filePath, int? startPageNum, int? endPageNum)
|
2023-08-28 15:24:43 +00:00
|
|
|
{
|
2023-12-30 03:54:41 +00:00
|
|
|
return await OpenPdfDocumentAsync(filePath, startPageNum, endPageNum);
|
2023-08-28 15:24:43 +00:00
|
|
|
}
|
|
|
|
|
|
2023-12-30 03:54:41 +00:00
|
|
|
private async Task<string> OpenPdfDocumentAsync(string filePath, int? startPageNum, int? endPageNum)
|
2023-08-28 15:24:43 +00:00
|
|
|
{
|
|
|
|
|
var document = PdfDocument.Open(filePath);
|
|
|
|
|
var content = "";
|
|
|
|
|
foreach (Page page in document.GetPages())
|
|
|
|
|
{
|
|
|
|
|
if (startPageNum.HasValue && page.Number < startPageNum.Value)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (endPageNum.HasValue && page.Number > endPageNum.Value)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
content += page.Text;
|
|
|
|
|
}
|
|
|
|
|
return content;
|
|
|
|
|
}
|
|
|
|
|
}
|