מבוא

Aspose.PDF FOSS עבור C++ כולל API גרפיקה וקטורית קטנה לבניית צורות חופשיות ישירות על דף PDF. זה נפרד משביל הרינדור הרסטרי של הספרייה — BmpDevice, JpegDevice, ו-TiffDevice, שממירים תוכן דף קיים לפורמטים של תמונה — ובמקום זאת מאפשר לתוכנית ליצור גיאומטריה חדשה (מעגלים, אליפסות וקווים) על הדף בזמן יצירת המסמך.

ה-API מתמקד ב-Graph, מכולה שמחזיקה קבוצה של אובייקטים מסוג Shape ומונחת על דף באותו האופן כמו תוכן דף אחר, דרך Page.Paragraphs(). שלוש צורות קונקרטיות נגזרות מהבסיס האבסטרקטי Shape: Circle, Ellipse ו-Line, כאשר כל אחת מבטאת את הגיאומטריה שלה באמצעות קבוצת תכונות מספריות קטנה במקום סוג משותף של נקודה או מלבן. רוחב הקו, הצבע, המילוי ותבנית הקו המופרד נקבעים לכל צורה באמצעות GraphInfo, והמכולה Graph עצמה נושאת BorderInfo למסגר את כל המכולה.

זהו תחום צר של הספרייה — חמש מחלקות המכסות גאומטריית צורה ועיצוב — מיועד לתוכניות שצריכות לצייר תוכן גאומטרי פשוט (גבולות, סמנים, קווים מחברים, עיגולי הדגשה) על דף מבלי לבנות שכבת ציור וקטורית מלאה או לחזור לשילוב תמונות.


מה כלול

מכולת הגרף והוספת צורות לדף

Graph מחזיק את הצורות הצבועות על דף. התכונות שלו — Left(), Top(), Width(), Height(), ו-IsChangePosition() — מקבעות את המיקום והגודל של המכולה על הדף, ו-Shapes() מחזירה את הווקטור של מצביעי Shape שהיא מכילה. צורות מתווספות על ידי יצירתן, קביעת תכונותיהן והוספתן לוקטור הזה; ה-Graph עצמו מתווסף לדף דרך Page.Paragraphs().Add().

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/graph.hpp>
#include <aspose/pdf/circle.hpp>

using namespace Aspose::Pdf;

int main() {
    Document doc;
    Page page = doc.Pages().Add();

    auto graph = std::make_shared<Graph>();
    graph->Left(50.0);
    graph->Top(50.0);
    graph->Width(400.0);
    graph->Height(400.0);

    auto circle = std::make_unique<Circle>();
    circle->PosX(200.0);
    circle->PosY(200.0);
    circle->Radius(75.0);
    graph->Shapes().push_back(std::move(circle));

    page.Paragraphs().Add(graph);
    doc.Save("graph.pdf");
}

ציור מעגלים ואליפסים

Circle ו-Ellipse כל אחת מתארת את הגיאומטריה שלה באמצעות תכונות מספריות פשוטות במקום סוג משותף של נקודה או מלבן. Circle חושפת PosX(), PosY(), ו-Radius(); Ellipse חושפת Left(), Bottom(), Width(), ו-Height(), המתארות תיבת גבול באותו הסגנון שבו Graph עצמו משתמש למיקום. שתיהן מעקפות את CheckBounds(containerWidth, containerHeight), שהורשתי מ-Shape, אשר מדווחת האם הגיאומטריה הנוכחית של הצורה מתאימה לתוך מכולה בגודל הנתון.

#include <aspose/pdf/circle.hpp>
#include <aspose/pdf/ellipse.hpp>

using namespace Aspose::Pdf;

Circle circle;
circle.PosX(150.0);
circle.PosY(150.0);
circle.Radius(50.0);
bool circleFits = circle.CheckBounds(400.0, 400.0);

Ellipse ellipse;
ellipse.Left(20.0);
ellipse.Bottom(20.0);
ellipse.Width(120.0);
ellipse.Height(60.0);
bool ellipseFits = ellipse.CheckBounds(400.0, 400.0);

ציור קווים

Line מאחסן את הגיאומטריה שלו בצורה שונה מ-Circle ו-Ellipse: PositionArray() מחזיר std::vector<float> שטוח של קואורדינטות — זוג x, y עבור כל נקודה שהקו חוצה — במקום קבוצת תכונות בשם. קטע עם שני נקודות מוגדר עם ארבע ערכים: x התחלה, y התחלה, x סוף, y סוף. כמו הצורות האחרות, Line מעקף את CheckBounds(containerWidth, containerHeight) מ-Shape.

#include <aspose/pdf/line.hpp>

using namespace Aspose::Pdf;

Line line;
line.PositionArray({50.0f, 50.0f, 350.0f, 350.0f});
bool lineFits = line.CheckBounds(400.0, 400.0);

עיצוב צורות עם GraphInfo ו-BorderInfo

כל קו ומילוי של צורה מגיעים מ-GraphInfo, שנקראים ונקבעים דרך Shape.GraphInfo() / GraphInfo(value). GraphInfo חושף את עובי הקו (LineWidth()), צבע הקו והמילוי (Color(), FillColor()), תבנית מקווקו (DashArray(), DashPhase()), דגל קו כפול (IsDoubled()), ותכונות של הטייה/קנה-מידה/סיבוב (SkewAngleX()/SkewAngleY(), ScalingRateX()/ScalingRateY(), RotationAngle()). מכולת Graph נושאת גם BorderInfo, שנקבעת דרך Border(), שמחזיקה GraphInfo אחד לכל צד — Left(), Right(), Top(), Bottom() — וכן RoundedBorderRadius() לעיגול הגבול של המכולה עצמה.

#include <aspose/pdf/graph_info.hpp>
#include <aspose/pdf/border_info.hpp>
#include <aspose/pdf/color.hpp>

using namespace Aspose::Pdf;

GraphInfo stroke;
stroke.LineWidth(2.0f);
stroke.Color(Color::FromRgb(1.0, 0.0, 0.0));
stroke.FillColor(Color::FromRgb(1.0, 0.9, 0.9));
stroke.DashArray({4, 2});

BorderInfo border{BorderSide::All, 1.5f, Color::Black()};
border.RoundedBorderRadius(6.0);

התחלה מהירה

הוסף את הספרייה כתת-ספרייה של CMake וקשר אל היעד aspose_pdf_foss:

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

צור מסמך, הוסף דף, צייר מעגל בתוך מכולת Graph, ושמור את התוצאה:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/graph.hpp>
#include <aspose/pdf/circle.hpp>

using namespace Aspose::Pdf;

int main() {
    Document doc;
    Page page = doc.Pages().Add();

    auto graph = std::make_shared<Graph>();
    graph->Left(50.0);
    graph->Top(50.0);
    graph->Width(300.0);
    graph->Height(300.0);

    auto circle = std::make_unique<Circle>();
    circle->PosX(150.0);
    circle->PosY(150.0);
    circle->Radius(100.0);
    graph->Shapes().push_back(std::move(circle));

    page.Paragraphs().Add(graph);
    doc.Save("circle.pdf");
}

פורמטים נתמכים

פורמטסיומתקריאהכתוב
BMP.bmp
JPEG.jpg
TIFF.tiff
Text.txt
SVG.svg

הפורמטים האלה חלים על הספרייה כולה — רסטריזציית דף (BMP, JPEG, TIFF), חילוץ טקסט (Text) וייבוא SVG — ולא על מחלקות הגרפיקה הוקטורית באופן ספציפי. Graph, Shape, Circle, Ellipse, ו-Line מציירים ישירות לתוכן דף ה-PDF ואינם קשורים לפורמט קובץ משלהם.


קוד פתוח ורישוי

Aspose.PDF FOSS עבור C++ מופץ תחת רישיון MIT, עם המקור המלא זמין ב-github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. הרישיון מאפשר שימוש מסחרי, שינוי והפצה מחדש ללא הסכם נפרד.


התחלה

משאבים קשורים