Aspose.PDF FOSS for C++ Funktioner

Aspose.PDF FOSS for C++ Funktioner

Aspose.PDF FOSS för C++ funktioner

Aspose.PDF FOSS för C++ är ett C++20-bibliotek för att skapa, öppna, ändra och spara PDF-dokument. Denna sida ger en översikt över de viktigaste funktionsområdena och de klasser som fungerar som deras ingångspunkter. Varje område behandlas utförligt på sin egen utvecklarhandledningssida.


Dokumenthantering

Aspose::Pdf::Document är rotobjektet för varje operation. Det öppnar en befintlig fil från en sökväg, exponerar sidkollektionen via Pages(), och sparar ändringar med Save(). Optimize() och OptimizeResources() minskar filstorleken genom att ta bort oanvända eller dubblerade resurser.

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

Textutvinning

Aspose::Pdf::Text::TextAbsorber traverserar ett dokument eller en enskild sida och samlar in vanlig text, som hämtas med Text() efter att ha anropat Visit(). TextFragmentAbsorber utför samma traversal men returnerar individuella TextFragment-objekt via TextFragments(), vilket ger åtkomst till varje fragmentets position och texttillstånd.

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

Rendering till rasterbilder

Sidrenderingsenheter konverterar en Page till en rasterbild. BmpDevice, PngDevice, JpegDevice och TiffDevice delar samma Process(page, output)-signatur och konstrueras med en Resolution som ställer in utdata-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);
}

Kryptering

Document::Encrypt() skyddar ett dokument med ett användarlösenord (som krävs för att öppna det) och ett ägarlösenord (som krävs för att ändra behörigheter), med en algoritm som väljs från CryptoAlgorithm-enum: RC4x40, RC4x128, AESx128 eller AESx256. IsEncrypted() rapporterar det aktuella tillståndet och Decrypt() tar bort skyddet från ett redan öppnat dokument.

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

Anmärkningar

Anmärkningar fäster synliga anteckningar, former och markup på en sida. Varje anmärkningstyp ärver från Annotation och konstrueras med mål Page och en placerings Rectangle, för att sedan läggas till sidan via Anmärkningar() (en 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

AcroForm fält hanteras via Aspose::Pdf::Forms::Form, nåbara via Document::Form(). Fälttyper som TextBoxField konstrueras som anmärkningar — med en Page och en Rectangle — och registreras med 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");
}

Tips och bästa praxis

  • Öppna inmatningsfiler via sökväg med Document-konstruktorn; anropa Save() med en explicit utdataväg istället för att skriva över källan medan andra handtag till den fortfarande kan vara öppna.
  • Anropa Optimize() före Save() när ett dokument har redigerats kraftigt — det tar bort resurser som inte längre refereras av någon sida.
  • Konstruera rasterenheter (BmpDevice, PngDevice, JpegDevice, TiffDevice) en gång per upplösning och återanvänd dem över sidor istället för att återskapa en enhet per sida.
  • Ange både ett användarlösenord och ett ägarlösenord när du anropar Encrypt() — ett tomt användarlösenord låter vilken betraktare som helst öppna filen, medan ägarlösenordet styr åtkomst till ändringar av behörigheter.
  • Behåll annoterings- och fältobjekt (TextAnnotation, TextBoxField och liknande) levande tills efter att Save() har återvänt, eftersom dokumentet håller referenser till sidans innehåll som de lades till.

Vanliga problem

ProblemOrsakLösning
Save() skapar en fil med oförändrat innehållRedigeringar gjordes på en sida eller annoteringskopia snarare än på objektet som erhölls från doc.Pages()Modifiera objektet som returneras direkt av Pages(), Annotations() eller Form()
Renderad bild är tom eller blankFel sidindex skickades till Process()PageCollection är 1-indexerad — sida 1 är doc.Pages()[1], inte [0]
Encrypt() skapar en fil som fortfarande öppnas utan lösenordAnvändarlösenord lämnades tomtSkicka en icke-tom sträng som userPassword-argumentet
Extraherad text är tom för en skannad PDFSidan innehåller endast rasterbildsinnehåll, inte textoperatorerTextAbsorber läser textoperatorer; bild-endast sidor har inga att extrahera
Fält som lagts till med Form::Add() visas inte på sidanFältets Rectangle ligger utanför sidans MediaBoxBekräfta att rektangelns koordinater ligger inom Page::MediaBox()s gränser

FAQ

Beror Aspose.PDF FOSS för C++ på något kommersiellt PDF-bibliotek?

Nej. Det är en från grunden C++20-implementation utan beroende av någon kommersiell PDF stack, släppt under MIT-licensen.

Kan jag skapa en ny PDF från grunden istället för att öppna en befintlig?

Ja. Document har en standardkonstruktor som skapar ett tomt dokument; anropa Pages().Add() för att lägga till sidor innan du sparar.

Vilka rasterformat kan jag rendera till?

BmpDevice, PngDevice, JpegDevice och TiffDevice renderar enskilda sidor till BMP, PNG, JPEG respektive TIFF.

Vilka krypteringsalgoritmer stöds?

CryptoAlgorithm erbjuder RC4x40, RC4x128, AESx128 och AESx256, som skickas till Document::Encrypt().

Vart går jag härnäst?

Utvecklarguiden innehåller dedikerade sidor för dokument- och sidhantering, PDF-native grafik och former, annotationer och interaktiva formulär, samt de högre nivåns fasadklasser som omsluter vanliga filoperationer.


API Reference Sammanfattning

Klass/MetodBeskrivning
DocumentRotobjekt — öppna, skapa, spara och optimera en PDF
Document.Pages()Returnerar dokumentets PageCollection
Document.Encrypt() / Decrypt()Lösenordsskydda eller ta bort skydd från ett dokument
Document.Form()Returnerar dokumentets AcroForm behållare
TextAbsorberExtraherar ren text från ett dokument eller en sida
TextFragmentAbsorberExtraherar positionerade textfragment
BmpDevice / PngDevice / JpegDevice / TiffDeviceRendera en sida till ett rasterbildformat
ResolutionUtdata DPI som skickas till en renderingsenhet
CryptoAlgorithmVal av krypteringsalgoritm: RC4 eller AES, 40–256 bit
PermissionsÅtkomstkontrollflaggor som skickas till Encrypt()
Annotation / AnnotationCollectionBastyp och behållare för sidanteckningar
TextAnnotationTextanteckning
FormAcroForm fältbehållare nådd via Document.Form()
TextBoxFieldEnradig/flerradig textformulärfält

Se även

 Svenska