using System; using System.IO; using System.Text; using netDxf; class TestDxfExtractIntegration { static void Main() { string filePath = "/home/windpacer/projects/ExperionCrawler/src/Web/uploads/pid/p-9100.dxf"; Console.WriteLine("=== PidExtractorService.ExtractDxfText() 정확한 재현 테스트 ===\n"); // PidExtractorService.ExtractDxfText() 메서드 정확히 재현 var tmp = Path.GetTempFileName() + ".dxf"; try { Console.WriteLine("1. Stream 복사 테스트"); using (var stream = File.OpenRead(filePath)) using (var fs = File.Create(tmp)) { stream.CopyTo(fs); Console.WriteLine($" ✓ Stream 복사 완료: {fs.Length:N0} bytes"); } Console.WriteLine("\n2. DxfDocument.Load() 테스트"); var doc = DxfDocument.Load(tmp); Console.WriteLine($" ✓ DXF 로드 성공"); Console.WriteLine($" - Texts: {doc.Entities.Texts.Count}"); Console.WriteLine($" - MTexts: {doc.Entities.MTexts.Count}"); Console.WriteLine($" - Blocks: {doc.Blocks.Count}"); Console.WriteLine("\n3. TEXT 추출 테스트"); var sb = new StringBuilder(); int textCount = 0; foreach (var txt in doc.Entities.Texts) { sb.AppendLine(txt.Value); textCount++; } Console.WriteLine($" ✓ TEXT 추출: {textCount}개, {sb.Length} bytes"); Console.WriteLine("\n4. MTEXT 추출 테스트"); int mtextCount = 0; foreach (var mtxt in doc.Entities.MTexts) { sb.AppendLine(mtxt.PlainText()); mtextCount++; } Console.WriteLine($" ✓ MTEXT 추출: {mtextCount}개"); Console.WriteLine("\n5. AttributeDefinition 추출 테스트"); int attrCount = 0; foreach (var blk in doc.Blocks) { foreach (var attr in blk.AttributeDefinitions.Values) { sb.AppendLine(attr.Value); attrCount++; } } Console.WriteLine($" ✓ AttributeDefinition 추출: {attrCount}개"); string result = sb.ToString(); Console.WriteLine($"\n=== 최종 결과 ==="); Console.WriteLine($"총 추출 길이: {result.Length} bytes"); Console.WriteLine($"총 줄 수: {result.Split('\n').Length}"); // 태그 패턴 검색 var lines = result.Split('\n'); int tagCount = 0; var foundTags = new System.Collections.Generic.List(); foreach (var line in lines) { if (System.Text.RegularExpressions.Regex.IsMatch(line, @"[A-Z]{2,4}-\d{3,4}(\.\w+)?", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (foundTags.Count < 10) { foundTags.Add(line.Trim()); } tagCount++; } } Console.WriteLine($"\n태그 패턴 검색 결과: {tagCount}개 발견"); Console.WriteLine("샘플 태그:"); foreach (var tag in foundTags) { Console.WriteLine($" - {tag}"); } Console.WriteLine($"\n=== 검증 완료 ==="); Console.WriteLine($"PidExtractorService.ExtractDxfText() 메서드는 정상적으로 작동합니다."); Console.WriteLine($"총 추출 텍스트: {result.Length} bytes ({result.Split('\n').Length} 줄)"); Console.WriteLine($"태그 패턴 발견: {tagCount}개"); } finally { if (File.Exists(tmp)) File.Delete(tmp); } } }