ไฟล์ PDF เป็นรูปแบบมาตรฐานสำหรับการแลกเปลี่ยนเอกสารทางอินเทอร์เน็ต เอกสารต่างๆ เช่น ใบแจ้งหนี้และคู่มือผลิตภัณฑ์มักแชร์กันในรูปแบบ PDF อาจมีสถานการณ์ที่คุณมีใบแจ้งหนี้หลายใบที่มีข้อมูลแบบตารางซึ่งคุณต้องแยกและประมวลผลเพิ่มเติม การดึงข้อมูลนี้โดยทางโปรแกรมจะมีประสิทธิภาพมากกว่า ด้วยเหตุนี้ บทความนี้จะสอนวิธีดึงข้อมูลจากตาราง PDF โดยใช้ C++

C ++ API สำหรับการดึงข้อมูลจากตารางในไฟล์ PDF

Aspose.PDF for C++ คือไลบรารี C++ ที่ให้คุณสร้าง อ่าน และอัปเดตไฟล์ PDF นอกจากนี้ API ยังรองรับการแยกข้อมูลจากตารางในไฟล์ PDF คุณสามารถติดตั้ง API ผ่าน NuGet หรือดาวน์โหลดโดยตรงจากส่วน ดาวน์โหลด

PM> Install-Package Aspose.PDF.Cpp

แยกข้อมูลจากตาราง PDF โดยใช้ C ++

ต่อไปนี้เป็นขั้นตอนในการดึงข้อมูลจากตาราง PDF

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการแยกข้อมูลจากตาราง PDF โดยใช้ C++

// โหลดเอกสาร PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// ทำซ้ำผ่านหน้าเอกสาร
for (auto page : pdfDocument->get_Pages())
{
	// สร้างอินสแตนซ์ของคลาส TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// ทำซ้ำผ่านตาราง
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// ทำซ้ำผ่านแถว
		for (auto row : table->get_RowList())
		{
			// ทำซ้ำผ่านเซลล์
			for (auto cell : row->get_CellList())
			{
				// วนซ้ำผ่านส่วนของข้อความ
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// วนซ้ำผ่านส่วนข้อความ
					for (auto seg : fragment->get_Segments())
					{
						// รับข้อความ
						string = String::Concat(string, seg->get_Text());
					}

					// พิมพ์ข้อความ
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

แยกข้อมูลจากตารางในพื้นที่เฉพาะของหน้า PDF

ในการดึงข้อมูลจากตารางในพื้นที่เฉพาะของหน้า PDF โปรดทำตามขั้นตอนด้านล่าง

โค้ดตัวอย่างต่อไปนี้สาธิตวิธีแยกข้อมูลจากตารางในพื้นที่เฉพาะของหน้า PDF โดยใช้ C++

// โหลดเอกสาร PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// รับหน้าแรกของเอกสาร
auto page = pdfDocument->get_Pages()->idx_get(1);

// ย้ำผ่านคำอธิบายประกอบในหน้า
for (auto annotation : page->get_Annotations())
{
	// ตรวจสอบประเภทคำอธิบายประกอบ
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// สร้างอินสแตนซ์ของคลาส TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// ทำซ้ำผ่านตาราง
		for (auto table : absorber->get_TableList())
		{
			// ตรวจสอบว่าตารางอยู่ในภูมิภาคหรือไม่
			if ((squareAnnotation->get_Rect()->get_LLX() < table->get_Rectangle()->get_LLX()) &&
				(squareAnnotation->get_Rect()->get_LLY() < table->get_Rectangle()->get_LLY()) &&
				(squareAnnotation->get_Rect()->get_URX() > table->get_Rectangle()->get_URX()) &&
				(squareAnnotation->get_Rect()->get_URY() > table->get_Rectangle()->get_URY())
				)
			{
				// ทำซ้ำผ่านแถว
				for (auto row : table->get_RowList())
				{
					// ทำซ้ำผ่านเซลล์
					for (auto cell : row->get_CellList())
					{
						// วนซ้ำผ่านส่วนของข้อความ
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// วนซ้ำผ่านส่วนข้อความ
							for (auto seg : fragment->get_Segments())
							{
								// รับข้อความ
								string = String::Concat(string, seg->get_Text());
							}

							// พิมพ์ข้อความ
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

รับใบอนุญาตฟรี

หากต้องการลองใช้ API โดยไม่มีข้อจำกัดในการประเมิน คุณสามารถขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีแยกข้อมูลจากตาราง PDF โดยใช้ C++ นอกจากนี้ คุณได้เรียนรู้วิธีแยกข้อมูลจากตารางในพื้นที่เฉพาะของหน้า PDF Aspose.PDF for C++ API มีคุณสมบัติเพิ่มเติมมากมายสำหรับการทำงานกับไฟล์ PDF คุณสามารถสำรวจ API โดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี

ดูสิ่งนี้ด้วย