Aspose.PDF FOSS for C++ Jellemzők

Aspose.PDF FOSS for C++ Jellemzők

Aspose.PDF FOSS a C++ funkciókhoz

Aspose.PDF FOSS for C++ egy C++20 könyvtár PDF dokumentumok létrehozásához, megnyitásához, módosításához és mentéséhez. Ez az oldal áttekinti a fő képességi területeket és az azokhoz tartozó belépési pontként szolgáló osztályokat. Minden terület részletesen ki van dolgozva a saját fejlesztői útmutató oldalán.


Dokumentumkezelés

Aspose::Pdf::Document a gyökérobjektum minden művelethez. Megnyit egy létező fájlt egy útvonalról, a Pages() segítségével eléri az oldalak gyűjteményét, és a Save() segítségével menti a módosításokat. A Optimize() és a OptimizeResources() csökkentik a fájlméretet a nem használt vagy duplikált erőforrások eltávolításával.

#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");
}

Szövegkinyerés

Aspose::Pdf::Text::TextAbsorber végigjár egy dokumentumot vagy egyetlen oldalt, és összegyűjti a egyszerű szöveget, amelyet a Text() segítségével lehet lekérni a Visit() meghívása után. A TextFragmentAbsorber ugyanazt a bejárást végzi, de egyedi TextFragment objektumokat ad vissza a TextFragments() segítségével, lehetővé téve minden fragmentum pozíciójának és szövegállapotának elérését.

#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";
}

Renderelés raszteres képekre

Az oldalmegjelenítő eszközök Page-t alakítanak raster képpé. BmpDevice, PngDevice, JpegDevice és TiffDevice ugyanazzal a Process(page, output) aláírással rendelkeznek, és egy Resolution segítségével épülnek, amely beállítja a kimeneti DPI-t.

#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);
}

Titkosítás

Document::Encrypt() egy felhasználói jelszóval (a megnyitásához szükséges) és egy tulajdonosi jelszóval (az engedélyek módosításához szükséges) védi a dokumentumot, a CryptoAlgorithm felsorolásból kiválasztott algoritmust használva: RC4x40, RC4x128, AESx128 vagy AESx256. IsEncrypted() jelenti az aktuális állapotot, és Decrypt() eltávolítja a védelmet egy már megnyitott dokumentumról.

#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");
}

Annotációk

Az annotációk látható jegyzeteket, alakzatokat és megjelöléseket csatolnak egy oldalhoz. Minden annotációtípus a Annotation-ból származik, és a cél Page és egy Rectangle elhelyezés segítségével épül fel, majd a Annotációk() (egy AnnotationCollection) útján adódik hozzá az oldalhoz.

#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 mezőket a Aspose::Pdf::Forms::Form kezeli, amely elérhető a Document::Form() útján. Olyan mezőtípusok, mint a TextBoxField, az annotációkhoz hasonlóan épülnek fel — egy Page és egy Rectangle — és a Form::Add() segítségével regisztrálódnak.

#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");
}

Tippek és bevált gyakorlatok

  • Nyissa meg a bemeneti fájlokat útvonallal a Document konstruktorral; hívja a Save() függvényt egy kifejezett kimeneti úttal, ahelyett, hogy felülírná a forrást, miközben más kezelők még nyitva lehetnek.
  • Hívja a Optimize() függvényt a Save() előtt, amikor egy dokumentumot erősen szerkesztettek — ez eltávolítja azokat az erőforrásokat, amelyek már nem hivatkoznak semmilyen oldalra.
  • Hozzon létre raszter eszközöket (BmpDevice, PngDevice, JpegDevice, TiffDevice) felbontásonként egyszer, és használja őket újra az oldalak között ahelyett, hogy minden oldalra újra létrehozná az eszközt.
  • Állítson be mind felhasználói jelszót, mind tulajdonosi jelszót a Encrypt() hívásakor — egy üres felhasználói jelszó lehetővé teszi bármely megjelenítőnek a fájl megnyitását, míg a tulajdonosi jelszó szabályozza a jogosultságváltozásokat.
  • Tartsa élő állapotban a megjegyzés- és mezőobjektumokat (TextAnnotation, TextBoxField és hasonlókat) addig, amíg a Save() vissza nem tér, mivel a dokumentum hivatkozásokat tartalmaz azokra az oldal tartalmakra, amelyekhez hozzá lettek adva.

Gyakori problémák

ProblémaOkJavítás
Save() egy fájlt hoz létre változatlan tartalommalA módosítások egy oldal vagy annotáció másolatán történtek, a doc.Pages() által kapott objektum helyettMódosítsa közvetlenül a Pages(), Annotations() vagy Form() által visszaadott objektumot
A renderelt kép üres vagy fehérHelytelen oldalindex került átadásra a Process() számáraPageCollection 1-indexelt — az 1. oldal doc.Pages()[1], nem [0]
Encrypt() olyan fájlt hoz létre, amely még mindig jelszó nélkül megnyithatóA felhasználói jelszó üresen maradtAdj meg egy nem üres karakterláncot a userPassword argumentumként
A kinyert szöveg üres egy szkennelt PDF eseténAz oldal csak raszter képtartalmat tartalmaz, nem szöveg operátorokatTextAbsorber szöveg operátorokat olvas; a csak képet tartalmazó oldalaknak nincs mit kinyerni
A Form::Add() által hozzáadott mező nem jelenik meg az oldalonA mező Rectangle a lap MediaBox határain kívül vanEllenőrizze, hogy a téglalap koordinátái a Page::MediaBox() határain belül vannak

FAQ

A Aspose.PDF C++-ra szánt FOSS változata függ-e bármely kereskedelmi PDF könyvtártól?

Nem. Ez egy nulláról készített C++20 implementáció, amely nem függ semmilyen kereskedelmi PDF stack-től, és az MIT licenc alatt kerül kiadásra.

Létrehozhatok új PDF-et a semmiből ahelyett, hogy egy meglévőt nyitnék meg?

Igen. Document rendelkezik alapértelmezett konstruktorral, amely üres dokumentumot hoz létre; hívd meg a Pages().Add() metódust oldalak hozzáfűzéséhez mentés előtt.

Milyen raszter formátumokba tudok renderelni?

BmpDevice, PngDevice, JpegDevice és TiffDevice egyes oldalakat BMP, PNG, JPEG és TIFF formátumokba renderelnek, sorrendben.

Milyen titkosítási algoritmusok támogatottak?

CryptoAlgorithm RC4x40, RC4x128, AESx128 és AESx256 kínál, amelyeket a Document::Encrypt() kap.

Mi legyen a következő lépés?

A fejlesztői útmutató dedikált oldalakat tartalmaz a dokumentum- és oldalkezeléshez, a PDF-nativ grafikákhoz és alakzatokhoz, a megjegyzésekhez és interaktív űrlapokhoz, valamint a magasabb szintű facade osztályokhoz, amelyek a gyakori fájlműveleteket burkolják.


API Reference Összefoglaló

Osztály/MódszerLeírás
DocumentGyökérobjektum — PDF megnyitása, létrehozása, mentése és optimalizálása
Document.Pages()Visszaadja a dokumentum PageCollection
Document.Encrypt() / Decrypt()Jelszóval védeni vagy eltávolítani egy dokumentum védelmét
Document.Form()Visszaadja a dokumentum AcroForm tárolóját
TextAbsorberKinyeri a sima szöveget egy dokumentumból vagy oldalról
TextFragmentAbsorberKinyeri a pozícionált szövegrészeket
BmpDevice / PngDevice / JpegDevice / TiffDeviceOldal renderelése raszter képformátumba
ResolutionKimeneti DPI, amely a renderelő eszköznek kerül átadásra
CryptoAlgorithmTitkosítási algoritmus kiválasztása: RC4 vagy AES, 40–256 bit
PermissionsHozzáférés-vezérlő jelzők, amelyeket a(z) Encrypt() kap
Annotation / AnnotationCollectionAlaptípus és tároló az oldalannotációkhoz
TextAnnotationSzöveges jegyzet annotáció
FormAcroForm mezőkonténer elérhető a Document.Form() útján
TextBoxFieldEgysoros/többsoros szöveg űrlapmező

Lásd még:

 Magyar