קבצי 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 בפירוט על ידי ביקור בתיעוד הרשמי. בכל שאלה, אנא אל תהסס לפנות אלינו בפורום התמיכה החינמי שלנו.

ראה גם