Giriş

Aspose.PDF FOSS for C++ PDF sayfasına doğrudan serbest biçimli şekiller oluşturmak için küçük bir vektör-grafik API içerir. Bu, kütüphanenin raster-renderleme yolundan — BmpDevice, JpegDevice ve TiffDevice — ayrı bir özelliktir; bu sınıflar mevcut sayfa içeriğini görüntü formatlarına dönüştürür. Bunun yerine, bir programın belge oluşturulurken sayfada yeni geometri (daireler, elipsler ve çizgiler) oluşturmasına olanak tanır.

API, bir Graph üzerine odaklanır; bu, bir dizi Shape nesnesini tutan ve Page.Paragraphs() aracılığıyla diğer sayfa içeriği gibi sayfaya yerleştirilen bir kapsayıcıdır. Soyut Shape temel sınıfından türeyen üç somut şekil vardır: Circle, Ellipse ve Line; her biri geometrisini ortak bir nokta ya da dikdörtgen tipi yerine küçük bir sayı özelliği kümesiyle ifade eder. Çizgi kalınlığı, renk, dolgu ve kesikli desen, GraphInfo üzerinden şekil başına ayarlanır ve Graph kapsayıcısı tüm kapsayıcıyı çerçevelemek için bir BorderInfo taşır.

Bu, kütüphanenin dar bir alanıdır — şekil geometrisi ve stilini kapsayan beş sınıf — tam bir vektör çizim katmanı oluşturmadan veya görüntü birleştirmeye geri dönmeden bir sayfada basit geometrik içerik (kenarlar, işaretçiler, bağlayıcı çizgiler, vurgulama daireleri) çizmeye ihtiyaç duyan programlar için tasarlanmıştır.


Neler Dahildir

Grafik Kapsayıcısı ve Sayfaya Şekil Ekleme

Graph, bir sayfada çizilen şekilleri tutar. Kendi özellikleri — Left(), Top(), Width(), Height() ve IsChangePosition() — kapsayıcının sayfadaki konum ve boyutunu belirler ve Shapes() tutulan Shape işaretçileri vektörünü döndürür. Şekiller, önce oluşturularak, özellikleri ayarlanıp bu vektöre eklenir; Graph ise Page.Paragraphs().Add() aracılığıyla sayfaya eklenir.

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

Çemberler ve Elipsler Çizme

Circle ve Ellipse, ortak bir nokta ya da dikdörtgen tipi yerine basit sayısal özelliklerle geometrilerini tanımlar. Circle, PosX(), PosY() ve Radius() özelliklerini sunar; Ellipse ise Left(), Bottom(), Width() ve Height() özelliklerini sunar ve Graph‘in konumlandırma için kullandığı aynı tarzda bir sınırlayıcı kutuyu tanımlar. İkisi de Shape‘den miras alınan CheckBounds(containerWidth, containerHeight) metodunu geçersiz kılar; bu metod, şeklin mevcut geometrisinin verilen boyuttaki bir kapsayıcıya sığıp sığmadığını rapor eder.

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

Çizgileri Çizme

Line, Circle ve Ellipse‘den farklı olarak geometrisini saklar: PositionArray() adlandırılmış özellikler yerine koordinatların düz bir std::vector<float>‘ını döndürür — çizginin geçtiği her nokta için bir x, y çifti. İki noktalı bir segment dört değerle ayarlanır: başlangıç x, başlangıç y, bitiş x, bitiş y. Diğer şekiller gibi, Line da Shape‘den gelen CheckBounds(containerWidth, containerHeight) metodunu geçersiz kılar.

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

Şekilleri GraphInfo ve BorderInfo ile Stil Verme

Her şeklin çizgisi ve doldurulması bir GraphInfo‘dan gelir, Shape.GraphInfo() / GraphInfo(value) aracılığıyla okunur ve ayarlanır. GraphInfo, çizgi kalınlığını (LineWidth()), çizgi ve doldurma rengini (Color(), FillColor()), bir kesik desenini (DashArray(), DashPhase()), çift çizgi bayrağını (IsDoubled()), ve eğim/ölçekleme/döndürme özelliklerini (SkewAngleX()/SkewAngleY(), ScalingRateX()/ScalingRateY(), RotationAngle()) sunar. Graph kapsayıcısı ayrıca bir BorderInfo taşır, Border() üzerinden ayarlanır ve kenar başına bir GraphInfo içerir — Left(), Right(), Top(), Bottom() — ayrıca kapsayıcının kendi kenarını yuvarlatmak için bir RoundedBorderRadius() bulunur.

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

Hızlı Başlangıç

Kütüphaneyi bir CMake alt dizini olarak ekleyin ve aspose_pdf_foss hedefine bağlayın:

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

Bir belge oluşturun, bir sayfa ekleyin, bir Graph kapsayıcısı içinde bir daire çizin ve sonucu kaydedin:

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

Desteklenen Biçimler

BiçimUzantıOkuYaz
BMP.bmp
JPEG.jpg
TIFF.tiff
Text.txt
SVG.svg

Bu formatlar, kütüphanenin tamamına uygulanır — sayfa rasterleştirme (BMP, JPEG, TIFF), metin çıkarma (Text) ve SVG içe aktarma — ve özellikle vektör grafik sınıflarına değil. Graph, Shape, Circle, Ellipse ve Line doğrudan PDF sayfa içeriğine çizer ve kendi dosya formatına bağlı değildir.


Açık Kaynak & Lisanslama

Aspose.PDF FOSS for C++ MIT lisansı altında dağıtılır, tam kaynak github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp adresinde mevcuttur. Lisans, ayrı bir anlaşma olmaksızın ticari kullanım, değişiklik ve yeniden dağıtımı izin verir.


Başlarken

İlgili Kaynaklar