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 | המרת דף לפורמט תמונה רסטרית |
Resolution | DPI הפלט שנשלח למכשיר רינדור |
CryptoAlgorithm | בחירת אלגוריתם הצפנה: RC4 או AES, 40–256 ביט |
Permissions | דגלי בקרת גישה שנשלחים ל-Encrypt() |
Annotation / AnnotationCollection | סוג בסיס ומכולה להערות עמוד |
TextAnnotation | הערת טקסט |
Form | מכולת השדה AcroForm שנגישה דרך Document.Form() |
TextBoxField | שדה טקסט בטופס חד-שורי/רב-שורי |