Aspose.PDF FOSS for C++ Özellikler
Aspose.PDF C++ için FOSS Özellikleri
Aspose.PDF FOSS for C++ bir C++20 kütüphanesidir ve PDF belgeleri oluşturma, açma, değiştirme ve kaydetme işlemleri için kullanılır. Bu sayfa ana yetenek alanlarını ve bunların giriş noktası görevi gören sınıfları inceler. Her alan, kendi geliştirici-kılavuz sayfasında ayrıntılı olarak ele alınmıştır.
Belge Yönetimi
Aspose::Pdf::Document, her işlem için kök nesnedir. Bir yolu üzerinden mevcut bir dosyayı açar, sayfa koleksiyonunu Pages() aracılığıyla sunar ve değişiklikleri Save() ile kalıcı hâle getirir. Optimize() ve OptimizeResources(), kullanılmayan veya yinelenen kaynakları kaldırarak dosya boyutunu azaltır.
#include <aspose/pdf/document.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
auto& pages = doc.Pages();
pages.Add(); // append a blank page
pages.Delete(1); // remove the original first page
doc.Optimize();
doc.Save("output.pdf");
}Metin Çıkarma
Aspose::Pdf::Text::TextAbsorber, bir belgeyi veya tek bir sayfayı dolaşır ve düz metni toplar; bu metin, Visit() çağrıldıktan sonra Text() ile alınır. TextFragmentAbsorber aynı dolaşımı gerçekleştirir ancak TextFragments() aracılığıyla ayrı ayrı TextFragment nesneleri döndürür, böylece her parçanın konumuna ve metin durumuna erişim sağlar.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <iostream>
int main() {
Aspose::Pdf::Document doc("report.pdf");
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::cout << absorber.Text() << "\n";
}Raster Görsellere Renderleme
Sayfa-işleme cihazları bir Page raster görüntüye dönüştürür. BmpDevice, PngDevice, JpegDevice ve TiffDevice aynı Process(page, output) imzasını paylaşır ve çıkış DPI’sını ayarlayan bir Resolution ile oluşturulur.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/bmp_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
int main() {
Aspose::Pdf::Document doc("report.pdf");
Aspose::Pdf::Devices::BmpDevice device(Aspose::Pdf::Devices::Resolution(150));
std::ofstream out("page1.bmp", std::ios::binary);
device.Process(doc.Pages()[1], out);
}Şifreleme
Document::Encrypt(), bir belgeyi kullanıcı parolası (açmak için gerekli) ve sahibi parolası (izinleri değiştirmek için gerekli) ile korur, CryptoAlgorithm enum’undan seçilen bir algoritma kullanarak: RC4x40, RC4x128, AESx128 veya AESx256. IsEncrypted(), mevcut durumu rapor eder ve Decrypt(), halihazırda açık bir belgeden korumayı kaldırır.
#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
Açıklamalar, bir sayfaya görünür notlar, şekiller ve işaretlemeler ekler. Her açıklama türü Annotation‘dan türetilir ve hedef Page ile bir Rectangle yerleşimi kullanılarak oluşturulur, ardından Açıklamalar() (bir AnnotationCollection) aracılığıyla sayfaya eklenir.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
auto page = doc.Pages()[1];
Aspose::Pdf::Annotations::TextAnnotation note(
page, Aspose::Pdf::Rectangle(50.0, 700.0, 250.0, 740.0, false));
note.Contents("Reviewed and approved.");
page.Annotations().Add(note);
doc.Save("annotated.pdf");
}Forms
AcroForm alanları Aspose::Pdf::Forms::Form aracılığıyla yönetilir, Document::Form() üzerinden erişilebilir. TextBoxField gibi alan türleri açıklamalar gibi — bir Page ve bir Rectangle — oluşturulur ve Form::Add() ile kaydedilir.
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_box_field.hpp>
#include <aspose/pdf/rectangle.hpp>
int main() {
Aspose::Pdf::Document doc("input.pdf");
auto page = doc.Pages()[1];
Aspose::Pdf::Forms::TextBoxField field(
page, Aspose::Pdf::Rectangle(100.0, 650.0, 300.0, 670.0, false));
field.PartialName("customer_name");
field.Value("Jane Doe");
doc.Form().Add(field);
doc.Save("form_filled.pdf");
}İpuçları ve En İyi Uygulamalar
- Girdi dosyalarını
Documentyapıcısı ile yol üzerinden açın;Save()‘i açık olan diğer tutamaçlar hâlâ mevcutken kaynağı üzerine yazmak yerine açık bir çıktı yolu ile çağırın. - Bir belge yoğun bir şekilde düzenlendiğinde
Optimize()‘iSave()‘den önce çağırın — bu, artık hiçbir sayfa tarafından referans edilmeyen kaynakları kaldırır. - Raster aygıtları (
BmpDevice,PngDevice,JpegDevice,TiffDevice) çözünürlük başına bir kez oluşturun ve bir sayfa için aygıt yeniden yaratmak yerine sayfalar arasında tekrar kullanın. Encrypt()‘i çağırırken hem bir kullanıcı parolası hem de bir sahip parolası ayarlayın — boş bir kullanıcı parolası herhangi bir görüntüleyicinin dosyayı açmasına izin verirken, sahip parolası izin değişikliklerini kontrol eder.- Belge, eklendikleri sayfa içeriğine referanslar tuttuğu için, açıklama ve alan nesnelerini (
TextAnnotation,TextBoxFieldve benzerlerini)Save()dönüş yapana kadar yaşatın.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
Save() değişmemiş içerikle bir dosya üretir | Düzenlemeler, doc.Pages() tarafından elde edilen nesne yerine bir sayfa veya açıklama kopyasına yapıldı | Doğrudan Pages(), Annotations() veya Form() tarafından döndürülen nesneyi değiştirin |
| Render edilen görüntü boş veya beyaz | Yanlış sayfa indeksi Process()‘a iletildi | PageCollection 1-indeksli — sayfa 1 doc.Pages()[1], [0] değil |
Encrypt() şifresiz bile açılabilen bir dosya üretir | Kullanıcı şifresi boş bırakıldı | userPassword argümanı olarak boş olmayan bir dize geçin |
| Taranan PDF için çıkarılan metin boştur | Sayfa yalnızca raster görüntü içeriği içerir, metin operatörleri yoktur | TextAbsorber metin operatörlerini okur; yalnızca görüntü içeren sayfalarda çıkarılacak bir şey yoktur |
Form::Add() ile eklenen alan sayfada görünmüyor | Alanın Rectangle sayfanın MediaBox dışında bulunuyor | Dikdörtgen koordinatlarının Page::MediaBox() sınırları içinde olduğunu doğrulayın |
FAQ
Aspose.PDF C++ için FOSS, herhangi bir ticari PDF kütüphanesine bağlı mı?
Hayır. Herhangi bir ticari PDF yığınına bağımlı olmayan, sıfırdan bir C++20 uygulamasıdır ve MIT lisansı altında yayınlanmıştır.
Var olan bir PDF’yi açmak yerine sıfırdan yeni bir PDF oluşturabilir miyim?
Evet. Document, boş bir belge oluşturan varsayılan bir yapıcıya sahiptir; kaydetmeden önce sayfalar eklemek için Pages().Add() çağırın.
Hangi raster formatlarına render alabilirim?
BmpDevice, PngDevice, JpegDevice ve TiffDevice sırasıyla BMP, PNG, JPEG ve TIFF formatlarına tek tek sayfaları render eder.
Hangi şifreleme algoritmaları destekleniyor?
CryptoAlgorithm, RC4x40, RC4x128, AESx128 ve AESx256 sunar, Document::Encrypt()‘e geçirilir.
Sıradaki adımım ne?
Geliştirici kılavuzu, belge ve sayfa yönetimi, PDF-native grafikler ve şekiller, açıklamalar ve etkileşimli formlar, ve ortak dosya işlemlerini saran üst düzey facade sınıfları için özel sayfalar içerir.
API Reference Özet
| Sınıf/Yöntem | Açıklama |
|---|---|
Document | Kök nesne — PDF’yi aç, oluştur, kaydet ve optimize et |
Document.Pages() | Belgenin PageCollection değerini döndürür |
Document.Encrypt() / Decrypt() | Bir belgeyi şifre korumalı hale getirin veya korumasını kaldırın |
Document.Form() | Belgenin AcroForm kapsayıcısını döndürür |
TextAbsorber | Bir belge veya sayfadan düz metni çıkarır |
TextFragmentAbsorber | Konumlandırılmış metin parçacıklarını çıkarır |
BmpDevice / PngDevice / JpegDevice / TiffDevice | Bir sayfayı raster görüntü formatına dönüştür |
Resolution | Render cihazına gönderilen çıktı DPI’si |
CryptoAlgorithm | Şifreleme algoritması seçimi: RC4 veya AES, 40–256 bit |
Permissions | Erişim kontrol bayrakları Encrypt()‘a iletildi |
Annotation / AnnotationCollection | Sayfa açıklamaları için temel tip ve kapsayıcı |
TextAnnotation | Metin notu açıklaması |
Form | AcroForm alan kapsayıcısı Document.Form() üzerinden erişildi |
TextBoxField | Tek satırlı/çok satırlı metin form alanı |