PDF dosyaları, internet üzerinden belge alışverişi için standart bir biçimdir. Faturalar ve ürün kılavuzları gibi belgeler genellikle PDF biçiminde paylaşılır. Çıkarmanız ve daha fazla işlemeniz gereken tablo verilerini içeren birden çok faturanızın olduğu durumlar olabilir. Bu verileri programlı olarak çıkarmak daha verimli olacaktır. Bu amaçla, bu makale size C++ kullanarak PDF tablolarından nasıl veri çıkaracağınızı öğretecektir.

PDF Dosyalarındaki Tablolardan Veri Çıkarmak için C++ API

Aspose.PDF for C++, PDF dosyaları oluşturmanıza, okumanıza ve güncellemenize olanak tanıyan bir C++ kitaplığıdır. Ayrıca API, PDF dosyalarındaki tablolardan veri çıkarmayı destekler. API’yi NuGet aracılığıyla yükleyebilir veya doğrudan indirilenler bölümünden indirebilirsiniz.

PM> Install-Package Aspose.PDF.Cpp

C++ kullanarak PDF Tablolarından Veri Çıkarma

Aşağıdakiler, PDF tablolarından veri ayıklama adımlarıdır.

Aşağıdaki örnek kod, C++ kullanarak PDF tablolarından nasıl veri çıkarılacağını gösterir.

// PDF belgesini yükleyin
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// Belgenin sayfalarını yineleyin
for (auto page : pdfDocument->get_Pages())
{
	// TableAbsorber sınıfının bir örneğini oluşturun
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// Tablolar arasında yineleme yapın
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// Satırları yinele
		for (auto row : table->get_RowList())
		{
			// Hücreler arasında yineleme
			for (auto cell : row->get_CellList())
			{
				// Metin parçalarını yineleyin
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// Metin segmentlerini yineleyin
					for (auto seg : fragment->get_Segments())
					{
						// metni al
						string = String::Concat(string, seg->get_Text());
					}

					// metni yazdır
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

Bir PDF Sayfasının Belirli Bir Alanındaki Tablodan Veri Çıkarma

Bir PDF sayfasının belirli bir alanındaki bir tablodan veri çıkarmak için lütfen aşağıda verilen adımları izleyin.

Aşağıdaki örnek kod, C++ kullanarak bir PDF sayfasının belirli bir alanındaki bir tablodan nasıl veri çıkarılacağını gösterir.

// PDF belgesini yükleyin
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// Belgenin ilk sayfasını alın
auto page = pdfDocument->get_Pages()->idx_get(1);

// Sayfadaki ek açıklamaları yineleyin
for (auto annotation : page->get_Annotations())
{
	// Ek açıklama türünü kontrol edin
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// TableAbsorber sınıfının bir örneğini oluşturun
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// Tablolar arasında yineleme yapın
		for (auto table : absorber->get_TableList())
		{
			// Tablonun bölgede olup olmadığını kontrol edin
			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())
				)
			{
				// Satırları yinele
				for (auto row : table->get_RowList())
				{
					// Hücreler arasında yineleme
					for (auto cell : row->get_CellList())
					{
						// Metin parçalarını yineleyin
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// Metin segmentlerini yineleyin
							for (auto seg : fragment->get_Segments())
							{
								// metni al
								string = String::Concat(string, seg->get_Text());
							}

							// metni yazdır
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

Ücretsiz Lisans Alın

API’yi değerlendirme kısıtlamaları olmadan denemek için [ücretsiz bir geçici lisans] talep edebilirsiniz37.

Çözüm

Bu makalede, C++ kullanarak PDF tablolarından nasıl veri çıkarılacağını öğrendiniz. Ayrıca, PDF sayfasının belirli bir bölgesindeki bir tablodan nasıl veri çıkarılacağını öğrendiniz. Aspose.PDF for C++ API, PDF dosyalarıyla çalışmak için birçok ek özellik sağlar. Resmi belgeleri ziyaret ederek API’yi ayrıntılı olarak inceleyebilirsiniz. Herhangi bir sorunuz olması durumunda lütfen ücretsiz destek forumumuzdan bize ulaşmaktan çekinmeyin.

Ayrıca bakınız