Aspose.PDF FOSS for C++ תכונות

Aspose.PDF FOSS for C++ תכונות

Aspose.PDF FOSS עבור תכונות C++

Aspose.PDF FOSS for C++ היא ספריית C++20 ליצירה, פתיחה, שינוי ושמירת מסמכי PDF. דף זה סוקר את תחומי היכולת המרכזיים ואת המחלקות המשמשות כנקודות הכניסה שלהם. כל תחום מכוסה לעומק בדף מדריך המפתחים שלו.


ניהול מסמכים

Aspose::Pdf::Document הוא האובייקט השורש לכל פעולה. הוא פותח קובץ קיים מהנתיב, חושף את אוסף העמודים דרך Pages(), ומשמר שינויים עם Save(). Optimize() ו-OptimizeResources() מצמצמים את גודל הקובץ על ידי הסרת משאבים לא בשימוש או משוכפלים.

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

חילוץ טקסט

Aspose::Pdf::Text::TextAbsorber מבצע הליכה במסמך או בעמוד יחיד ואוסף טקסט פשוט, שניתן לקבל אותו דרך Text() לאחר קריאה ל-Visit(). TextFragmentAbsorber מבצע את אותה הליכה אך מחזיר אובייקטים TextFragment בודדים דרך TextFragments(), ומספק גישה למיקום ולמצב הטקסט של כל קטע.

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

המרה לתמונות רסטר

התקני רינדור דפים ממירים Page לתמונה רסטרית. BmpDevice, PngDevice, JpegDevice ו-TiffDevice חולקים את אותה חתימת Process(page, output) ונבנים עם Resolution שמגדיר את ה-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);
}

הצפנה

Document::Encrypt() מגנה על מסמך באמצעות סיסמת משתמש (נדרשת לפתיחה) וסיסמת בעלים (נדרשת לשינוי הרשאות), תוך שימוש באלגוריתם שנבחר מתוך האינום CryptoAlgorithm: RC4x40, RC4x128, AESx128 או AESx256. IsEncrypted() מדווח על המצב הנוכחי ו-Decrypt() מסיר את ההגנה ממסמך שכבר נפתח.

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

הערות

הערות מצרפות הערות נראות, צורות וסימון לעמוד. כל סוג הערה נגזר מ-Annotation ונבנה עם ה-Page היעד ו-Rectangle מיקום, ולאחר מכן מתווסף לעמוד דרך הערות() (‏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 שדות מנוהלים דרך Aspose::Pdf::Forms::Form, נגישים דרך Document::Form(). סוגי שדות כמו TextBoxField נבנים כמו הערות — עם Page ו-Rectangle — ונרשמים ב-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");
}

טיפים ושיטות עבודה מומלצות

  • פתח קבצי קלט לפי נתיב באמצעות הבונה Document; קרא ל-Save() עם נתיב פלט מפורש במקום לדרוס את המקור כאשר עדיין פתוחים מצביעים אחרים עליו.
  • קרא ל-Optimize() לפני Save() כאשר המסמך עבר עריכה נרחבת — הוא מסיר משאבים שאינם משוייכים יותר על ידי אף דף.
  • צור מכשירי רסטר (BmpDevice, PngDevice, JpegDevice, TiffDevice) פעם אחת לכל רזולוציה והשתמש בהם מחדש על פני דפים במקום ליצור מכשיר חדש לכל דף.
  • הגדר גם סיסמת משתמש וגם סיסמת בעלים בעת קריאה ל-Encrypt() — סיסמת משתמש ריקה מאפשרת לכל צופה לפתוח את הקובץ, בעוד שסיסמת הבעלים מגבילה שינויי הרשאות.
  • שמור אובייקטי הערות ושדות (TextAnnotation, TextBoxField וכדומה) בחיים עד לאחר שהפונקציה Save() תחזיר, משום שהמסמך מחזיק הפניות לתוכן העמוד אליהם הם נוספו.

בעיות נפוצות

בעיהסיבהתיקון
Save() מייצר קובץ עם תוכן שלא השתנהבוצעו עריכות על עותק של עמוד או של הערה במקום על האובייקט שהתקבל מ-doc.Pages()שנה את האובייקט המוחזר ישירות על-ידי Pages(), Annotations() או Form()
התמונה המוצגת ריקה או ריקהאינדקס דף שגוי נשלח ל-Process()PageCollection הוא בעל אינדקס של 1 — דף 1 הוא doc.Pages()[1], ולא [0]
Encrypt() מייצר קובץ שעדיין נפתח ללא סיסמהסיסמת המשתמש הושארה ריקההעבר מחרוזת שאינה ריקה כארגומנט userPassword
הטקסט המופק ריק עבור קובץ PDF סרוקהדף מכיל רק תוכן של תמונת רסטר, ללא אופרטורי טקסטTextAbsorber קורא אופרטורי טקסט; לדפים המורכבים רק מתמונות אין כאלה לחלץ
השדה שנוסף עם Form::Add() אינו מופיע על הדףה-Rectangle של השדה נמצא מחוץ ל-MediaBox של העמודאשר שהקואורדינטות של המלבן נמצאות בתוך גבולות Page::MediaBox()

FAQ

האם Aspose.PDF FOSS עבור C++ תלוי בכל ספריית PDF מסחרית?

לא. זוהי מימוש מאפס ב-C++20 ללא תלות באף ערימת PDF מסחרית, שוחררה תחת רישיון MIT.

האם אני יכול ליצור PDF חדש מאפס במקום לפתוח קיים?

כן. Document כולל בנאי ברירת מחדל היוצר מסמך ריק; קרא ל-Pages().Add() כדי לצרף דפים לפני השמירה.

לאילו פורמטים רסטריים אני יכול לבצע רינדור?

BmpDevice, PngDevice, JpegDevice ו-TiffDevice ממירים דפים בודדים ל-BMP, PNG, JPEG ו-TIFF בהתאמה.

אילו אלגוריתמי הצפנה נתמכים?

CryptoAlgorithm מציע RC4x40, RC4x128, AESx128 ו-AESx256, שעוברים ל-Document::Encrypt().

לאן אני הולך הלאה?

המדריך למפתחים כולל דפים ייעודיים לניהול מסמכים ודפים, גרפיקה וצורות בטבע PDF, הערות וטפסים אינטראקטיביים, וכיתות חזותיות ברמה גבוהה העוטפות פעולות קובץ נפוצות.


API Reference סיכום

מחלקה/מתודהתיאור
Documentאובייקט השורש — פתח, צור, שמור ואופטימיזציה של PDF
Document.Pages()מחזיר את PageCollection של המסמך
Document.Encrypt() / Decrypt()להצפין מסמך בסיסמה או להסיר את ההגנה ממנו
Document.Form()מחזיר את מכולת AcroForm של המסמך
TextAbsorberמחלץ טקסט פשוט ממסמך או מדף
TextFragmentAbsorberמחלץ קטעי טקסט ממוקמים
BmpDevice / PngDevice / JpegDevice / TiffDeviceהמרת דף לפורמט תמונה רסטרית
ResolutionDPI הפלט שנשלח למכשיר רינדור
CryptoAlgorithmבחירת אלגוריתם הצפנה: RC4 או AES, 40–256 ביט
Permissionsדגלי בקרת גישה שנשלחים ל-Encrypt()
Annotation / AnnotationCollectionסוג בסיס ומכולה להערות עמוד
TextAnnotationהערת טקסט
Formמכולת השדה AcroForm שנגישה דרך Document.Form()
TextBoxFieldשדה טקסט בטופס חד-שורי/רב-שורי

ראה גם

 עברית