Giriş
Aspose.PDF FOSS for C++, C++20 kodundan PDF belgeleriyle çalışmak için yeni bir açık kaynak kütüphanesidir. MIT lisansı altında yayımlanmıştır ve C++ standard kütüphanesi dışındaki bir çalışma zamanı bağımlılığı bulunmaz — BMP, JPEG ve TIFF kodlayıcıları, sayfa rasterleştiricisi ve PDF ayrıştırıcısı dahili olarak uygulanmıştır, bu yüzden ticari bir PDF motoruna, harici bir görüntü codec’ine veya üçüncü taraf bir kriptografi kütüphanesine bağlantı yoktur.
Kütüphane, bir dosya yolundan PDF yükleyen ve içeriğini Document.Pages() aracılığıyla, tek tek Page nesnelerinden oluşan bir PageCollection olarak sunan Aspose::Pdf::Document sınıfı etrafında düzenlenmiştir. Buradan itibaren, API metin çıkarımı, sayfa rasterleştirme, belge şifreleme, açıklamalar ve AcroForm alanlarını kapsar — mevcut PDF dosyalarını okuma, inceleme ve değiştirme ya da sıfırdan yeni dosyalar oluşturma işlemleri için gereken işlemler.
Bu sürüm, C++ kod tabanında ticari bir lisans ya da üçüncü taraf bir bağımlılık zinciri eklemeden PDF işleme ihtiyacı duyan geliştiriciler içindir: belge hatları, içerik çıkarma hizmetleri, PDF’den görüntüye dönüşüm araçları ve daha büyük bir yapının parçası olarak form verilerini şifrelemesi veya geri okuması gereken uygulamalar.
Neler Dahil
Belge Yükleme ve Sayfa Erişimi
Mevcut bir PDF’yi açmak tek bir yapıcı çağrısıdır. Document dosyayı ayrıştırır ve sayfalarını Pages() aracılığıyla sunar; bu, 1 tabanlı indekslemeyi, Count() ve sayfa sırasını yeniden düzenlemek için Add()/Insert()/Delete() metodlarını destekleyen bir PageCollection döndürür.
#include <aspose/pdf/document.hpp>
#include <iostream>
int main() {
Aspose::Pdf::Document doc("input.pdf");
std::cout << "Page count: " << doc.Pages().Count() << "\n";
auto page = doc.Pages()[1];
std::cout << "First page number: " << page.Number() << "\n";
}
Metin Çıkarma
Aspose::Pdf::Text::TextAbsorber, bir Document ya da tek bir Page üzerinde dolaşarak bulduğu metin içeriğini toplar. Visit() metodunu bir belge ya da sayfa ile çağırın, ardından sonucu Text() ile okuyun. HasErrors() absorbe edilen içeriğin işlenemeyen bir kısmı olup olmadığını raporlar.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <iostream>
int main() {
Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::cout << absorber.Text() << "\n";
if (absorber.HasErrors()) {
std::cerr << "Some content could not be extracted\n";
}
}
Raster Görüntülere İşleme
Sayfalar, BmpDevice, JpegDevice ve TiffDevice sınıfları aracılığıyla BMP, JPEG veya TIFF formatına dönüştürülür. Her cihaz, bir Resolution ile oluşturulur ve oluşturulan görüntüyü bir çıkış akışına yazan Process(page, output) metodunu sunar.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
int main() {
Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Devices::BmpDevice bmp(Aspose::Pdf::Devices::Resolution(150));
std::ofstream out("page1.bmp", std::ios::binary);
bmp.Process(doc.Pages()[1], out);
}
Şifreleme
Document.Encrypt() bir belgeyi kullanıcı parolası, sahip parolası, izin değeri ve bir CryptoAlgorithm seçimiyle korur. Enum, RC4-40 (RC4x40), RC4-128 (RC4x128), AES-128 (AESx128) ve AES-256 (AESx256) içerir. Document.Decrypt() işlemi tersine çevirir ve IsEncrypted() belgenin şu anda şifrelenip şifrelenmediğini rapor eder.
#include <aspose/pdf/document.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
doc.Encrypt("user-password", "owner-password",
Aspose::Pdf::Permissions::PrintDocument,
Aspose::Pdf::CryptoAlgorithm::AESx256);
doc.Save("encrypted.pdf");
}
Açıklamalar
Her Page, Annotations() aracılığıyla bir AnnotationCollection sunar. Bir TextAnnotation, sahibi belgeye karşı oluşturulur, bir Rectangle ile konumlandırılır ve Add() ile sayfanın koleksiyonuna eklenir.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/annotations/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Annotations::TextAnnotation note(doc);
note.Rect(Aspose::Pdf::Rectangle(100.0, 700.0, 200.0, 720.0, false));
note.Contents("Reviewed - see section 2");
doc.Pages()[1].Annotations().Add(note);
doc.Save("annotated.pdf");
}
AcroForm Alanları
Document.Form() belgenin Form nesnesini döndürür; bu nesne mevcut alanları Fields() aracılığıyla bir std::vector<Field*> olarak sunar. Her Field, adını ve mevcut değerini PartialName() ve Value() ile rapor eder ve Form.Flatten() her alanın görünümünü sayfa içeriğine yerleştirerek etkileşimi kaldırır.
#include <aspose/pdf/document.hpp>
#include <iostream>
int main() {
Aspose::Pdf::Document doc("form.pdf");
auto& form = doc.Form();
std::cout << "Field count: " << form.Count() << "\n";
for (auto* field : form.Fields()) {
std::cout << field->PartialName() << " = " << field->Value() << "\n";
}
form.Flatten();
doc.Save("flattened.pdf");
}
Hızlı Başlangıç
Kütüphaneyi bir CMake alt dizini olarak ekleyin ve aspose_pdf_foss hedefine bağlayın:
add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
Bir belge açın, sayfa sayısını yazdırın, metnini çıkarın ve ilk sayfayı bir BMP dosyasına render edin:
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>
int main() {
Aspose::Pdf::Document doc("input.pdf");
std::cout << "Pages: " << doc.Pages().Count() << "\n";
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::cout << absorber.Text() << "\n";
Aspose::Pdf::Devices::BmpDevice bmp(Aspose::Pdf::Devices::Resolution(150));
std::ofstream out("page1.bmp", std::ios::binary);
bmp.Process(doc.Pages()[1], out);
}
Desteklenen Biçimler
| Biçim | Uzantı | Oku | Yaz |
|---|---|---|---|
| BMP | .bmp | — | ✓ |
| JPEG | .jpg | — | ✓ |
| TIFF | .tiff | — | ✓ |
| Text | .txt | — | ✓ |
| SVG | .svg | ✓ | — |
BMP, JPEG, ve TIFF, ilgili cihaz sınıfları tarafından üretilen sayfa renderleme çıktılarıdır. Metin bir PDF’den TextAbsorber aracılığıyla çıkarılır. SVG, kütüphanenin SVG yükleme yolu üzerinden vektör içerik olarak içe aktarılır.
Açık Kaynak ve Lisanslama
Aspose.PDF FOSS for C++ MIT lisansı altında dağıtılmaktadır, tam kaynak şu adreste mevcuttur: github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. Lisans, ayrı bir anlaşma olmaksızın ticari kullanım, değiştirme ve yeniden dağıtıma izin verir.