Aspose.PDF FOSS for C++ Özellikler

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ı Document yapı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()‘i Save()‘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, TextBoxField ve benzerlerini) Save() dönüş yapana kadar yaşatın.

Yaygın Sorunlar

SorunNedenDüzeltme
Save() değişmemiş içerikle bir dosya üretirDü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 beyazYanlış sayfa indeksi Process()‘a iletildiPageCollection 1-indeksli — sayfa 1 doc.Pages()[1], [0] değil
Encrypt() şifresiz bile açılabilen bir dosya üretirKullanıcı şifresi boş bırakıldıuserPassword argümanı olarak boş olmayan bir dize geçin
Taranan PDF için çıkarılan metin boşturSayfa yalnızca raster görüntü içeriği içerir, metin operatörleri yokturTextAbsorber 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üyorAlanın Rectangle sayfanın MediaBox dışında bulunuyorDikdö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öntemAçıklama
DocumentKö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
TextAbsorberBir belge veya sayfadan düz metni çıkarır
TextFragmentAbsorberKonumlandırılmış metin parçacıklarını çıkarır
BmpDevice / PngDevice / JpegDevice / TiffDeviceBir sayfayı raster görüntü formatına dönüştür
ResolutionRender cihazına gönderilen çıktı DPI’si
CryptoAlgorithmŞifreleme algoritması seçimi: RC4 veya AES, 40–256 bit
PermissionsErişim kontrol bayrakları Encrypt()‘a iletildi
Annotation / AnnotationCollectionSayfa açıklamaları için temel tip ve kapsayıcı
TextAnnotationMetin notu açıklaması
FormAcroForm alan kapsayıcısı Document.Form() üzerinden erişildi
TextBoxFieldTek satırlı/çok satırlı metin form alanı

Ayrıca Bakınız

 Türkçe