@page "/createform/{SiteId:int}" @using System.IO @using BLAIzor.Models @using BLAIzor.Services @using Microsoft.AspNetCore.Components.Forms @using System.Text @using UglyToad.PdfPig @using BLAIzor.Components.Layout @attribute [Authorize] @layout AdminLayout @inject ContentEditorAIService ContentEditorAIService

Create a new from from pdf or word

@if (ExtractedFields.Any()) {
Extracted Fields:
} @code { [Parameter] public int SiteId { get; set; } private string PdfText = string.Empty; private List ExtractedFields = new(); private async Task HandleFileSelected(InputFileChangeEventArgs e) { var file = e.File; if (file == null || !file.ContentType.Contains("pdf")) return; var tempPath = Path.Combine(Path.GetTempPath(), file.Name); await using (var stream = file.OpenReadStream()) await using (var fileStream = File.Create(tempPath)) { await stream.CopyToAsync(fileStream); } PdfText = ExtractPdfText(tempPath); // Call OpenAI to analyze and extract structured fields ExtractedFields = await CallAiForFieldExtraction(PdfText); } private string ExtractPdfText(string filePath) { var sb = new StringBuilder(); using (var document = PdfDocument.Open(filePath)) { foreach (var page in document.GetPages()) { sb.AppendLine(page.Text); } } return sb.ToString(); } private async Task> CallAiForFieldExtraction(string plainText) { var jsonResult = await ContentEditorAIService.AnalyzeGroupedFormFieldsFromText(plainText); Console.WriteLine($"📄 PDF form AI response: {jsonResult}"); try { var groups = System.Text.Json.JsonSerializer.Deserialize>(jsonResult, new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true }); return groups ?? new List(); } catch (Exception ex) { Console.WriteLine($"❌ Error parsing AI JSON: {ex.Message}"); return new List(); } } }