• <menu id="w2i4a"></menu>
  • logo Aspose.PDF使用教程

    文檔首頁>>Aspose.PDF使用教程>>Aspose.PDF功能演示:使用 C# 以編程方式從 PDF 表格中提取數(shù)據(jù)

    Aspose.PDF功能演示:使用 C# 以編程方式從 PDF 表格中提取數(shù)據(jù)


    PDF已成為眾多領(lǐng)域中使用最廣泛的文檔格式之一。在各種情況下,它用于生成數(shù)據(jù)以表格形式顯示的發(fā)票。在這種情況下,可能需要解析 PDF 以編程方式從表中讀取數(shù)據(jù)。為此,本文介紹了如何使用 C# 從 PDF 表中提取數(shù)據(jù)。

    • 在 C# 中從 PDF 表格中提取數(shù)據(jù)
    • 從頁面的特定區(qū)域提取表格


    為了從 PDF 文件中的表格中提取數(shù)據(jù),我們將使用Aspose.PDF for .NET,它是一個強大的 API,提供了廣泛的 PDF 操作功能。點擊下方按鈕可下載試用。

    點擊下載最新版Aspose.PDF for .NET

    在 C# 中從 PDF 表格中提取數(shù)據(jù)

    以下是使用 C# 從 PDF 表格中提取數(shù)據(jù)的步驟。

    • 使用Document類加載 PDF 文檔。
    • 使用Document.Pages集合循環(huán)瀏覽 PDF 中的頁面。
    • 在每次迭代中,初始化TableAbsorber對象并使用TableAbsorber.Visit(Page)方法訪問所選頁面。
    • 在嵌套循環(huán)中,遍歷TableAbsorber.TableList集合中的表列表。
    • 對于每個AbsorbedTable集合,在迭代通過行的集合AbsorbedTable.RowList。
    • 對于每個AbsorbedRow收集,迭代通過在細(xì)胞收集AbsorbedRow.CellList。
    • 最后,遍歷TextFragments每個集合AbsorbedCell和打印文本。

    以下代碼示例展示了如何在 C# 中從 PDF 表格中提取文本。

    // Load source PDF document
    Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 
    
    // Loop through the pages                      
    foreach (var page in pdfDocument.Pages)
    {
    	// Create a table absorber and visit the page
    	Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
    	absorber.Visit(page);
    	
    	// Loop through each absorbed table 
    	foreach (AbsorbedTable table in absorber.TableList)
    	{
    		Console.WriteLine("Table");
    		
    		// Loop through each row in the table
    		foreach (AbsorbedRow row in table.RowList)
    		{
    			// Loop through each cell in the row
    			foreach (AbsorbedCell cell in row.CellList)
    			{       
    				// Loop through the text fragments
    				foreach (TextFragment fragment in cell.TextFragments)
    				{
    					var sb = new StringBuilder();
    					foreach (TextSegment seg in fragment.Segments)
    						sb.Append(seg.Text);
    					Console.Write($"{sb.ToString()}|");
    				}                           
    			}
    			Console.WriteLine();
    		}
    	}
    }

    從頁面的特定區(qū)域提取表格

    以下是使用 C# 從 PDF 頁面的特定部分提取表格的步驟。

    • 使用Document類加載 PDF 文檔。
    • 從Document.Pages集合中選擇所需的頁面。
    • 提取頁面的 Square 注釋。
    • 初始化TableAbsorber對象并使用TableAbsorber.Visit(Page)方法訪問頁面。
    • 在嵌套循環(huán)中,遍歷TableAbsorber.TableList集合中的表列表。
    • 如果該表在該區(qū)域中,則執(zhí)行以下步驟。
      • 通過迭代行的集合AbsorbedTable.RowList。
      • 對于每個AbsorbedRow收集,迭代通過在細(xì)胞收集AbsorbedRow.CellList。
      • 最后,遍歷TextFragments每個集合AbsorbedCell和打印文本。

    以下代碼示例展示了如何從 PDF 頁面的特定區(qū)域提取表格。

    // Load source PDF document
    Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf"); 
    
    // Select the page and extract its square annotation
    var page = pdfDocument.Pages[1];
    var squareAnnotation =
    	page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
    	as Annotations.SquareAnnotation;
    
    // Create table absorber and visit the page
    Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
    absorber.Visit(page);
    
    // Loop through each absorbed table in the list 
    foreach (AbsorbedTable table in absorber.TableList)
    {
    	var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) && (squareAnnotation.Rect.LLY < table.Rectangle.LLY) && (squareAnnotation.Rect.URX > table.Rectangle.URX) &&
    	(squareAnnotation.Rect.URY > table.Rectangle.URY);
    
    	if (isInRegion)
    	{
    		// Loop through each row of the table
    		foreach (AbsorbedRow row in table.RowList)
    		{
    			// Loop through each cell in the row
    			foreach (AbsorbedCell cell in row.CellList)
    			{
    				// Loop through the text fragments and print the text
    				foreach (TextFragment fragment in cell.TextFragments)
    				{
    					var sb = new StringBuilder();
    					foreach (TextSegment seg in fragment.Segments)
    					{
    						sb.Append(seg.Text);
    					}
    					var text = sb.ToString();
    					Console.Write($"{text}|");
    				}
    			}
    			Console.WriteLine();
    		}
    	}
    }

    如果您有任何疑問或需求,請隨時加入Aspose技術(shù)交流群(761297826),我們很高興為您提供查詢和咨詢。
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();