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
Documentkonstruktorral; hívja aSave()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 aSave()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 aSave()vissza nem tér, mivel a dokumentum hivatkozásokat tartalmaz azokra az oldal tartalmakra, amelyekhez hozzá lettek adva.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
Save() egy fájlt hoz létre változatlan tartalommal | A módosítások egy oldal vagy annotáció másolatán történtek, a doc.Pages() által kapott objektum helyett | Módosítsa közvetlenül a Pages(), Annotations() vagy Form() által visszaadott objektumot |
| A renderelt kép üres vagy fehér | Helytelen oldalindex került átadásra a Process() számára | PageCollection 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 maradt | Adj meg egy nem üres karakterláncot a userPassword argumentumként |
| A kinyert szöveg üres egy szkennelt PDF esetén | Az oldal csak raszter képtartalmat tartalmaz, nem szöveg operátorokat | TextAbsorber 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 oldalon | A mező Rectangle a lap MediaBox határain kívül van | Ellenő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ódszer | Leírás |
|---|---|
Document | Gyö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 |
TextAbsorber | Kinyeri a sima szöveget egy dokumentumból vagy oldalról |
TextFragmentAbsorber | Kinyeri a pozícionált szövegrészeket |
BmpDevice / PngDevice / JpegDevice / TiffDevice | Oldal renderelése raszter képformátumba |
Resolution | Kimeneti DPI, amely a renderelő eszköznek kerül átadásra |
CryptoAlgorithm | Titkosítási algoritmus kiválasztása: RC4 vagy AES, 40–256 bit |
Permissions | Hozzáférés-vezérlő jelzők, amelyeket a(z) Encrypt() kap |
Annotation / AnnotationCollection | Alaptípus és tároló az oldalannotációkhoz |
TextAnnotation | Szöveges jegyzet annotáció |
Form | AcroForm mezőkonténer elérhető a Document.Form() útján |
TextBoxField | Egysoros/többsoros szöveg űrlapmező |