Bevezetés
Aspose.PDF FOSS for C++ egy új nyílt forráskódú könyvtár PDF-dokumentumok kezelésére C++20 kódból. MIT licenc alatt kerül kiadásra, és nem igényel futási időbeli függőséget a C++ szabványos könyvtárán túl — a BMP, JPEG és TIFF kódolókat, az oldalképzőt és a PDF-elemzőt belsőleg valósítja meg, így nincs hivatkozás kereskedelmi PDF motorra, külső képkódolóra vagy harmadik fél kriptográfiai könyvtárra.
A könyvtár a Aspose::Pdf::Document osztály köré szerveződik, amely fájlútról betölti a PDF-et, és a tartalmát a Document.Pages()-on keresztül teszi elérhetővé, ami egy egyedi Page objektumokból álló PageCollection. Innen a API lefedi a szövegkinyerést, az oldal rasterizálását, a dokumentum titkosítását, a megjegyzéseket és az AcroForm mezőket – a műveleteket, amelyek szükségesek a meglévő PDF-fájlok olvasásához, vizsgálatához és módosításához, vagy újak létrehozásához a semmiből.
Ez a kiadás azoknak a fejlesztőknek szól, akiknek PDF-feldolgozásra van szükségük egy C++ kódbázison belül anélkül, hogy kereskedelmi licencet vagy harmadik fél függőségi láncot adnának hozzá: dokumentumcsővezetékek, tartalomkinyerő szolgáltatások, PDF‑kép konverziós eszközök, valamint olyan alkalmazások, amelyeknek titkosítaniuk vagy visszaolvasniuk kell a űrlapadatokat egy nagyobb építési folyamat részeként.
Mi található benne
Dokumentum betöltése és oldalhozzáférés
Egy meglévő PDF megnyitása egyetlen konstruktorhívás. A Document beolvassa a fájlt, és a lapjait a Pages()-on keresztül teszi elérhetővé, amely egy PageCollection-t ad vissza, amely támogatja az 1-től kezdődő indexelést, a Count()-ot, valamint az Add()/Insert()/Delete() műveleteket az oldalsorrend átalakításához.
#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";
}
Szövegkinyerés
Aspose::Pdf::Text::TextAbsorber bejár egy Document-ot vagy egyetlen Page-et, és összegyűjti a megtalált szövegtartalmat. Hívja meg a Visit()-et egy dokumentummal vagy egy oldallal, majd olvassa ki az eredményt a Text() segítségével. A HasErrors() jelzi, hogy az abszorber olyan tartalomra bukkant-e, amelyet nem tudott feldolgozni.
#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";
}
}
Renderelés raszteres képekre
Az oldalak a BmpDevice, JpegDevice és TiffDevice osztályokon keresztül BMP, JPEG vagy TIFF formátumba renderelnek. Minden eszköz egy Resolution-nel kerül konstrukcióra, és egy Process(page, output) metódust biztosít, amely a renderelt képet egy kimeneti áramba írja.
#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);
}
Titkosítás
Document.Encrypt() egy felhasználói jelszóval, egy tulajdonosi jelszóval, egy jogosultsági értékkel és egy CryptoAlgorithm kiválasztással védi a dokumentumot. Az enumeráció tartalmazza a RC4-40 (RC4x40), RC4-128 (RC4x128), AES-128 (AESx128) és AES-256 (AESx256) algoritmusokat. A Document.Decrypt() visszafordítja a műveletet, és az IsEncrypted() jelzi, hogy a dokumentum jelenleg titkosított-e.
#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
Minden Page a Annotations()-on keresztül egy AnnotationCollection-t tesz elérhetővé. A TextAnnotation a szülő dokumentumhoz van létrehozva, egy Rectangle-lel pozícionálva, és az Add() segítségével kerül hozzáadásra az oldal gyűjteményéhez.
#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 mezők
Document.Form() visszaadja a dokumentum Form-ját, amely a meglévő mezőket a Fields()-en keresztül egy std::vector<Field*>-ként teszi elérhetővé. Minden Field a nevét és a jelenlegi értékét a PartialName() és Value() segítségével jelzi, és a Form.Flatten() minden mező megjelenését beágyazza az oldal tartalmába, eltávolítva az interaktivitást.
#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");
}
Gyors kezdés
Adja hozzá a könyvtárat CMake alkönyvtárként, és linkeljen a aspose_pdf_foss célpontra:
add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
Nyisson meg egy dokumentumot, írja ki az oldalainak számát, vonja ki a szövegét, és renderelje az első oldalt BMP fájlba:
#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);
}
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| BMP | .bmp | — | ✓ |
| JPEG | .jpg | — | ✓ |
| TIFF | .tiff | — | ✓ |
| Text | .txt | — | ✓ |
| SVG | .svg | ✓ | — |
BMP, JPEG és TIFF oldalrenderelési kimenetek, amelyeket a megfelelő eszközosztályok állítanak elő. A szöveget egy PDF-ből a TextAbsorber segítségével nyerik ki. Az SVG vektor tartalomként kerül importálásra a könyvtár SVG betöltési útvonalán keresztül.
Nyílt forráskód és licencelés
Aspose.PDF FOSS for C++ az MIT licenc alatt kerül terjesztésre, a teljes forrás elérhető itt github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. A licenc megengedi a kereskedelmi felhasználást, módosítást és újraelosztást külön megállapodás nélkül.