Pendahuluan

Aspose.PDF FOSS untuk C++ mencakup sebuah API vektor-grafik kecil untuk membangun bentuk bebas secara langsung pada halaman PDF. Ini terpisah dari jalur perenderan raster pustaka — BmpDevice, JpegDevice, dan TiffDevice, yang mengonversi konten halaman yang ada ke format gambar — dan malah memungkinkan program membangun geometri baru (lingkaran, elips, dan garis) pada halaman saat dokumen dihasilkan.

API berpusat pada sebuah Graph, sebuah kontainer yang menampung sekumpulan objek Shape dan ditempatkan pada halaman dengan cara yang sama seperti konten halaman lainnya, melalui Page.Paragraphs(). Tiga bentuk konkret diturunkan dari basis abstrak Shape: Circle, Ellipse, dan Line, masing-masing mengekspresikan geometrinya melalui sekumpulan kecil properti numerik alih-alih tipe titik atau persegi panjang bersama. Lebar goresan, warna, isi, dan pola dash diatur per bentuk melalui GraphInfo, dan kontainer Graph itu sendiri membawa BorderInfo untuk membingkai seluruh kontainer.

Ini merupakan area sempit dalam pustaka — lima kelas yang mencakup geometri bentuk dan gaya — ditujukan untuk program yang perlu menggambar konten geometris sederhana (garis tepi, penanda, garis penghubung, lingkaran sorotan) pada halaman tanpa membangun lapisan gambar vektor penuh atau kembali ke komposit gambar.


Apa yang Disertakan

Kontainer Grafik dan Menambahkan Bentuk ke Halaman

Graph menyimpan bentuk-bentuk yang digambar pada sebuah halaman. Properti-nya sendiri — Left(), Top(), Width(), Height(), dan IsChangePosition() — menentukan posisi dan ukuran kontainer pada halaman, dan Shapes() mengembalikan vektor pointer Shape yang disimpannya. Bentuk-bentuk ditambahkan dengan membuatnya, mengatur propertinya, dan menambahkan ke vektor tersebut; Graph itu sendiri ditambahkan ke halaman melalui 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");
}

Menggambar Lingkaran dan Elips

Circle dan Ellipse masing-masing menggambarkan geometri mereka dengan properti numerik sederhana alih-alih tipe titik atau persegi panjang bersama. Circle menyediakan PosX(), PosY(), dan Radius(); Ellipse menyediakan Left(), Bottom(), Width(), dan Height(), yang mendeskripsikan kotak pembatas dengan gaya yang sama seperti yang digunakan Graph untuk penempatan. Kedua-nya meng-override CheckBounds(containerWidth, containerHeight), yang diwarisi dari Shape, yang melaporkan apakah geometri bentuk saat ini muat di dalam kontainer dengan ukuran yang diberikan.

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

Menggambar Garis

Line menyimpan geometri nya secara berbeda dari Circle dan Ellipse: PositionArray() mengembalikan sebuah std::vector<float> datar berisi koordinat — pasangan x, y untuk setiap titik yang dilalui garis — alih-alih sekumpulan properti bernama. Segmen dua titik diatur dengan empat nilai: x awal, y awal, x akhir, y akhir. Seperti bentuk-bentuk lainnya, Line meng-override CheckBounds(containerWidth, containerHeight) dari 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);

Menata Bentuk dengan GraphInfo dan BorderInfo

Garis tepi dan isi setiap bentuk berasal dari GraphInfo, dibaca dan diatur melalui Shape.GraphInfo() / GraphInfo(value). GraphInfo menyediakan lebar garis (LineWidth()), warna garis dan isi (Color(), FillColor()), pola dash (DashArray(), DashPhase()), flag garis ganda (IsDoubled()), serta properti skew/skala/rotasi (SkewAngleX()/SkewAngleY(), ScalingRateX()/ScalingRateY(), RotationAngle()). Kontainer Graph juga membawa BorderInfo, diatur melalui Border(), yang menyimpan satu GraphInfo per sisi — Left(), Right(), Top(), Bottom() — serta RoundedBorderRadius() untuk membulatkan border kontainer itu sendiri.

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

Panduan Cepat

Tambahkan pustaka sebagai subdirektori CMake dan tautkan terhadap target aspose_pdf_foss:

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

Buat sebuah dokumen, tambahkan sebuah halaman, gambar sebuah lingkaran di dalam kontainer Graph, dan simpan hasilnya:

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

Format yang Didukung

FormatEkstensiBacaTulis
BMP.bmp
JPEG.jpg
TIFF.tiff
Text.txt
SVG.svg

Format-format ini berlaku untuk seluruh perpustakaan — rasterisasi halaman (BMP, JPEG, TIFF), ekstraksi teks (Text), dan impor SVG — bukan untuk kelas grafik vektor secara khusus. Graph, Shape, Circle, Ellipse, dan Line menggambar langsung ke konten halaman PDF dan tidak terkait dengan format file mereka sendiri.


Sumber Terbuka & Lisensi

Aspose.PDF FOSS untuk C++ didistribusikan di bawah lisensi MIT, dengan sumber lengkap tersedia di github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp. Lisensi tersebut mengizinkan penggunaan komersial, modifikasi, dan redistribusi tanpa perjanjian terpisah.


Memulai

Sumber Daya Terkait