Aspose.PDF FOSS for C++ Funkce

Aspose.PDF FOSS for C++ Funkce

Aspose.PDF FOSS pro C++ funkce

Aspose.PDF FOSS pro C++ je knihovna C++20 pro vytváření, otevírání, úpravu a ukládání PDF dokumentů. Tato stránka přehledně popisuje hlavní oblasti schopností a třídy, které slouží jako jejich vstupní body. Každá oblast je podrobně rozebrána na samostatné stránce vývojářské příručky.


Správa dokumentů

Aspose::Pdf::Document je kořenový objekt pro každou operaci. Otevírá existující soubor z cesty, zpřístupňuje kolekci stránek prostřednictvím Pages() a ukládá změny pomocí Save(). Optimize() a OptimizeResources() snižují velikost souboru odstraňováním nepoužívaných nebo duplicitních zdrojů.

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

Extrahování textu

Aspose::Pdf::Text::TextAbsorber prochází dokument nebo jednotlivou stránku a sbírá prostý text, který je získán pomocí Text() po zavolání Visit(). TextFragmentAbsorber provádí stejný průchod, ale vrací jednotlivé objekty TextFragment prostřednictvím TextFragments(), což poskytuje přístup k pozici a stavu textu každého fragmentu.

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

Renderování do rastrových obrázků

Zařízení pro vykreslování stránek převádějí Page na rastrový obraz. BmpDevice, PngDevice, JpegDevice a TiffDevice mají stejný Process(page, output) podpis a jsou konstruovány s Resolution, která nastavuje výstupní DPI.

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

Šifrování

Document::Encrypt() chrání dokument uživatelským heslem (potřebným k jeho otevření) a heslem vlastníka (potřebným ke změně oprávnění), pomocí algoritmu vybraného z výčtu CryptoAlgorithm: RC4x40, RC4x128, AESx128 nebo AESx256. IsEncrypted() hlásí aktuální stav a Decrypt() odstraňuje ochranu již otevřeného dokumentu.

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

Anotace

Anotace připojují viditelné poznámky, tvary a značky na stránku. Každý typ anotace je odvozen od Annotation a je konstruován s cílovým Page a umístěním Rectangle, poté je přidán na stránku pomocí Anotace() (jedná se o AnnotationCollection).

#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

Pole AcroForm jsou spravována přes Aspose::Pdf::Forms::Form, přístupná přes Document::Form(). Typy polí, jako je TextBoxField, jsou konstruovány podobně jako anotace — s Page a Rectangle — a registrovány pomocí Form::Add().

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

Tipy a osvědčené postupy

  • Otevřete vstupní soubory podle cesty pomocí konstruktoru Document; zavolejte Save() s explicitní výstupní cestou místo přepsání zdroje, zatímco jiné handle k němu mohou být stále otevřeny.
  • Zavolejte Optimize() před Save(), když byl dokument výrazně upraven — odstraňuje prostředky, které již nejsou žádnou stránkou odkazovány.
  • Vytvořte rastrová zařízení (BmpDevice, PngDevice, JpegDevice, TiffDevice) jednou na rozlišení a znovu je použijte napříč stránkami místo vytváření zařízení pro každou stránku.
  • Při volání Encrypt() nastavte jak uživatelské heslo, tak heslo vlastníka — prázdné uživatelské heslo umožní jakémukoli prohlížeči soubor otevřít, zatímco heslo vlastníka omezuje změny oprávnění.
  • Udržujte objekty anotací a polí (TextAnnotation, TextBoxField a podobně) naživu až do návratu z Save(), protože dokument uchovává odkazy na obsah stránky, ke které byly přidány.

Časté problémy

ProblémPříčinaOprava
Save() vytváří soubor s nezměněným obsahemÚpravy byly provedeny na kopii stránky nebo anotace místo objektu získaného z doc.Pages()Upravte objekt vrácený přímo Pages(), Annotations() nebo Form()
Vykreslený obrázek je prázdný nebo prázdně bílýByl předán nesprávný index stránky do Process()PageCollection je indexováno od jedné — stránka 1 je doc.Pages()[1], ne [0]
Encrypt() vytváří soubor, který se stále otevírá bez heslaUživatelské heslo ponecháno prázdnéPředávejte neprázdný řetězec jako argument userPassword
Extrahovaný text je prázdný u naskenovaného PDFStránka obsahuje pouze rastrový obrázek, ne textové operátoryTextAbsorber čte textové operátory; stránky obsahující jen obrázky nemají žádné k extrakci
Pole přidané pomocí Form::Add() se na stránce neobjevíPole Rectangle spadá mimo MediaBox stránkyPotvrďte, že souřadnice obdélníku jsou v mezích Page::MediaBox()

FAQ

Závisí Aspose.PDF FOSS pro C++ na nějaké komerční PDF knihovně?

Ne. Jedná se o implementaci od nuly v C++20, která nevyžaduje žádnou komerční PDF knihovnu a je vydána pod licencí MIT.

Mohu vytvořit nový PDF dokument od nuly místo otevírání existujícího?

Ano. Document má výchozí konstruktor, který vytvoří prázdný dokument; zavolejte Pages().Add() pro přidání stránek před uložením.

Do jakých rastrových formátů mohu renderovat?

BmpDevice, PngDevice, JpegDevice a TiffDevice renderují jednotlivé stránky do BMP, PNG, JPEG a TIFF v uvedeném pořadí.

Jaké šifrovací algoritmy jsou podporovány?

CryptoAlgorithm nabízí RC4x40, RC4x128, AESx128 a AESx256, které jsou předány do Document::Encrypt().

Kam mám jít dál?

Průvodce vývojáře obsahuje vyhrazené stránky pro správu dokumentů a stránek, PDF-native grafiku a tvary, anotace a interaktivní formuláře a vyšší úrovně fasádních tříd, které zapouzdřují běžné operace se soubory.


API Reference Shrnutí

Třída/MetodaPopis:
DocumentKořenový objekt — otevřít, vytvořit, uložit a optimalizovat PDF
Document.Pages()Vrací PageCollection dokumentu
Document.Encrypt() / Decrypt()Chránit dokument heslem nebo odebrat ochranu dokumentu
Document.Form()Vrací kontejner AcroForm dokumentu
TextAbsorberExtrahuje prostý text z dokumentu nebo stránky
TextFragmentAbsorberExtrahuje umístěné fragmenty textu
BmpDevice / PngDevice / JpegDevice / TiffDeviceVykreslí stránku do rastrového formátu obrazu
ResolutionVýstupní DPI předané vykreslovacímu zařízení
CryptoAlgorithmVýběr šifrovacího algoritmu: RC4 nebo AES, 40–256 bitů
PermissionsPříznaky řízení přístupu předané Encrypt()
Annotation / AnnotationCollectionZákladní typ a kontejner pro anotace stránky
TextAnnotationAnotace textové poznámky
FormKontejner pole AcroForm dosažený přes Document.Form()
TextBoxFieldJednořádkové/víceřádkové textové pole formuláře

Viz také:

 Čeština