Java’da gradient ile imza görünümünü özelleştirme
Hiç bazı dijital imzalı belgelerin nasıl, şey… sıkıcı göründüğünü fark ettiniz mi? Sadece beyaz bir arka plan üzerinde düz metin? Eğer sözleşmeler, faturalar veya sertifikalar gibi profesyonel görünümlü belge imzalarına ihtiyaç duyan bir uygulama geliştiriyorsanız—imzanızın öne çıkmasını ve aynı zamanda işlevsel olmasını istersiniz. Bu öğreticide, Java’da bir gradient fırça uygulayarak imza görünümünü nasıl özelleştireceğinizi öğreneceksiniz. Gradient bir dijital imza oluşturmak sadece görsel bir parlaklık katmakla kalmaz, aynı zamanda marka kimliğini güçlendirir ve algılanan özgünlüğü artırır.
Hızlı Yanıtlar
- Degrade dijital imza nedir? Arka planı veya metin doldurması için renk geçişi kullanan dijital olarak imzalanmış görsel öğe.
- Java’da bunu destekleyen kütüphane hangisidir? GroupDocs.Signature for Java, yerleşik degrade fırça desteği sağlar.
- Degrader kriptografik güvenliği etkiler mi? Hayır. Degrade tamamen görseldir; temel dijital imza değişmez.
- Hangi Java sürümü gereklidir? JDK 8 veya üzeri (JDK 11+ önerilir).
- Üretim için lisans gerekli mi? Evet—değerlendirme dışı kullanım için geçerli bir GroupDocs.Signature lisansı gerekir.
Dijital İmzalar İçin Neden Degrade Fırçalar Kullanılmalı?
Degrade fırça, imzanın arka planına marka tutarlı renk geçişleri eklemenizi sağlar; bu da imzalanan belgenin daha profesyonel ve güvenilir hissettirmesine yardımcı olur. Degrade imzalar görsel hiyerarşi oluşturur, onay seviyelerini ayırt eder ve kurumsal kimliği güçlendirir; aynı zamanda imzanın kriptografik bütünlüğünü etkilemez.
Öğrenecekleriniz
Bu öğreticide, GroupDocs.Signature kütüphanesini yapılandırmayı, degrade‑stil metin imzaları oluşturmayı, renkler, şeffaflık ve konum gibi görsel özellikleri ayarlamayı ve uygulama sırasında ortaya çıkan yaygın sorunları çözmeyi öğreneceksiniz. Rehber ayrıca performans ipuçları ve temiz, yeniden kullanılabilir imzalama kodu için en iyi uygulama kalıplarını da kapsar.
- GroupDocs.Signature for Java kurulumu (Maven, Gradle veya manuel)
- Lineer degrade fırçalarıyla degrade dijital imza nesneleri oluşturma
- Görünüm, konumlandırma ve şeffaflığı özelleştirme
- Yaygın sorunları giderme ve performansı optimize etme
- Bakımı kolay imza kodu için en iyi uygulama kalıplarını uygulama
Ön Koşullar
Başlamadan önce şu şeylere sahip olduğunuzdan emin olun:
- Java Development Kit (JDK) 8 veya üzeri (JDK 11+ önerilir)
- IDE (IntelliJ IDEA, Eclipse veya Java uzantılarına sahip VS Code)
- GroupDocs.Signature for Java kütüphanesi (Maven, Gradle veya manuel JAR ile eklenmiş)
- Java nesneleri, metodlar ve istisna yönetimi konusunda temel bilgi
Gerekli Kütüphaneler
GroupDocs.Signature’ı tercih ettiğiniz yapı aracını kullanarak projenize ekleyin.
Maven için (pom.xml dosyanıza ekleyin):
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle için (build.gradle dosyanıza ekleyin):
implementation 'com.groupdocs:groupdocs-signature:23.12'
Manuel kurulum: Bir yapı aracı kullanmıyorsanız (öneririz), JAR dosyasını GroupDocs Signatures releases adresinden indirip sınıf yolunuza ekleyin.
Lisans Edinme
GroupDocs, geliştirme için ücretsiz deneme sunar, ancak ticari kullanımda üretim lisansı gereklidir.
- Ücretsiz deneme – GroupDocs Free Trial adresinden indirin
- Geçici lisans – tam özellikli test için GroupDocs Temporary License adresinden 30‑günlük anahtar alın
- Tam lisans – üretim dağıtımları için fiyatlandırma portalından satın alın
Deneme sürümü değerlendirme filigranları ekler; uygulamanızı müşterilere sunmadan önce geçici ya da tam lisans almanız gerekir.
GroupDocs.Signature for Java Kurulumu
Ortamı hazırlayalım. Bu, yeni projeler ve mevcut kod tabanlarına entegrasyon için geçerlidir.
Kurulum Adımları
- Bağımlılığı ekleyin (yukarıda anlatıldı).
- Kurulumu doğrulayın basit bir test sınıfı oluşturarak:
import com.groupdocs.signature.Signature;
public class SignatureTest {
public static void main(String[] args) {
System.out.println("GroupDocs.Signature loaded successfully!");
}
}
Bu hata vermeden derleniyorsa, bir sonraki adıma geçebilirsiniz.
- Belge klasörlerinizi düzenleyin – temiz bir yapı, çok sayıda dosya işlenirken yardımcı olur:
project-root/
├── src/
├── resources/
│ ├── input/ // Source documents to sign
│ └── output/ // Signed documents
└── pom.xml (or build.gradle)
- Temel başlatma –
Signaturenesnesi tüm imzalama işlemlerinin giriş noktasıdır:
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
public class BasicSignatureSetup {
public static void main(String[] args) {
try {
// Initialize with your source document path
Signature signature = new Signature("resources/input/sample.pdf");
// Your signing code will go here
signature.dispose(); // Always clean up resources
} catch (GroupDocsSignatureException e) {
System.err.println("Signature error: " + e.getMessage());
e.printStackTrace();
} catch (Exception e) {
System.err.println("General error: " + e.getMessage());
e.printStackTrace();
}
}
}
İpucu: Signature örneğini try‑with‑resources bloğu içinde tutun ya da manuel olarak dispose() çağırın. Dosya tutamaçlarını serbest bırakmayı unutmak “dosya kullanımda” hatalarına yol açar.
Uygulama Kılavuzu: Degrade İmzalar Oluşturma
Şimdi degrade dijital imza oluşturma sürecini adım adım inşa edeceğiz.
Adım 1: İmza Seçeneklerini Başlatma
İlk olarak, imzanın içereceklerini tanımlarız. TextSignOptions sınıfı metin‑tabanlı imzaları yönetir.
Tanım referansı: TextSignOptions, metin içeriği, yazı tipi, renk ve görsel efektler dahil olmak üzere metinsel bir imzanın yapılandırmasını temsil eder.
import com.groupdocs.signature.domain.enums.HorizontalAlignment;
import com.groupdocs.signature.domain.enums.VerticalAlignment;
import com.groupdocs.signature.domain.signatures.TextSignOptions;
TextSignOptions options = new TextSignOptions("John Smith");
Bu kod parçacığı “John Smith” yazan temel bir imza oluşturur. Tek başına şeffaf bir arka plan üzerinde sade siyah metin olarak görünür – pek etkileyici değildir.
Adım 2: Degrade Fırça ile Arka Planı Özelleştirme
Şimdi, imzaya şık bir görünüm kazandırmak için lineer degrade fırçası uygularız.
Tanım referansı: LinearGradientBrush, bir şekli düz bir hat boyunca dolduran renk geçişini tanımlar; başlangıç ve bitiş renkleri ile açı belirlenir.
import com.groupdocs.signature.domain.Background;
import com.groupdocs.signature.domain.extensions.brushes.LinearGradientBrush;
import java.awt.Color;
// Create the background container
Background background = new Background();
background.setColor(Color.GREEN); // Fallback color (rarely seen)
background.setTransparency(0.5f); // 50% transparency (0.0 = opaque, 1.0 = invisible)
// Define the gradient: start color, end color, and angle
LinearGradientBrush brush = new LinearGradientBrush(
Color.GREEN, // Start color (left/top)
Color.WHITE, // End color (right/bottom)
45 // Angle in degrees (45 = diagonal)
);
// Apply the brush to the background
background.setBrush(brush);
options.setBackground(background);
Temel noktalar:
setColor(Color.GREEN)degrade render edilemezse yedek katı rengi sağlar.setTransparency(0.5f)imzayı yarı şeffaf yapar, alttaki metnin gizlenmesini önler. 0’a yakın değerler opak, 1’e yakın değerler neredeyse görünmez.45açısı, sol‑üstten sağ‑alta diyagonal bir geçiş oluşturur. Yatay için0, dikey için90ve aradaki herhangi bir açı kullanılabilir.
Marka renklerinize (ör. güven için mavi‑beyaz, onay için yeşil‑beyaz) uygun renkler seçmek, imzayı anında tanınabilir kılar.
Adım 3: İmza Konumlandırmasını Ayarlama
Şimdi motorun imzayı sayfada nerede yerleştireceğini belirtiyoruz.
Tanım referansı: SignatureOptions (tüm seçenek tiplerinin temel sınıfı), hizalama, kenar boşlukları ve boyut gibi ortak özellikleri tutar.
import com.groupdocs.signature.domain.Padding;
// Set signature dimensions (in pixels or points, depending on document)
options.setWidth(100);
options.setHeight(80);
// Center the signature both horizontally and vertically
options.setVerticalAlignment(VerticalAlignment.Center);
options.setHorizontalAlignment(HorizontalAlignment.Center);
// Add margins to fine‑tune positioning
Padding padding = new Padding();
padding.setTop(20); // 20 units from the alignment point
padding.setRight(20); // 20 units from the right edge
options.setMargin(padding);
Hizalama ve kenar boşluğu arasındaki fark:
- Alignment imzayı sabitler (ör.
HorizontalAlignment.Right). - Margin sabit noktanın kaydırmasını sağlar (ör.
setMarginTop(-10)).
Yaygın kalıplar:
| İstenen konum | HorizontalAlignment | VerticalAlignment | Tipik kenar boşluğu değerleri |
|---|---|---|---|
| Sağ‑alt | Right | Bottom | setMarginTop(-20) |
| Üst‑başlık alanı | Right | Top | setMarginTop(20) |
| Sayfa ortası | Center | Center | setMarginLeft(0) |
Metin uzunluğunu ve sayfanın sayfa boyutunu dikkate alarak setWidth ve setHeight değerlerini ayarlayın.
Adım 4: İmzayı Uygula ve Kaydet
Son olarak belgeyi imzalıyor ve sonucu yeni bir dosyaya yazıyoruz.
Tanım referansı: SignResult, bir imzalama işleminin sonucunu, başarılı ve başarısız imzaları içerecek şekilde ayrıntılı olarak sağlar.
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.SignResult;
try {
// Initialize signature with source document
Signature signature = new Signature("resources/input/sample.pdf");
// Apply the signature options we configured above
SignResult result = signature.sign("resources/output/SignedWithGradient.pdf", options);
// Check the result
if (result.getSucceeded().size() > 0) {
System.out.println("Document signed successfully!");
System.out.println("Signed with " + result.getSucceeded().size() + " signature(s)");
} else {
System.out.println("No signatures were applied.");
}
// Clean up
signature.dispose();
} catch (Exception e) {
System.err.println("Error signing document: " + e.getMessage());
e.printStackTrace();
}
sign() metodu kaynak dosyayı alır, yapılandırılmış seçenekleri uygular ve görsel imzayı içeren yeni bir dosya oluşturur; orijinal dosya değişmeden kalır. Her zaman signResult.getSucceeded() kontrol ederek başarısını doğrulayın.
Tam Çalışan Örnek
Aşağıda, hemen kopyalayıp çalıştırabileceğiniz tek bir sınıf halinde birleştirilmiş tüm kod bulunmaktadır:
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.Background;
import com.groupdocs.signature.domain.Padding;
import com.groupdocs.signature.domain.SignResult;
import com.groupdocs.signature.domain.enums.HorizontalAlignment;
import com.groupdocs.signature.domain.enums.VerticalAlignment;
import com.groupdocs.signature.domain.extensions.brushes.LinearGradientBrush;
import com.groupdocs.signature.domain.signatures.TextSignOptions;
import java.awt.Color;
public class GradientSignatureExample {
public static void main(String[] args) {
try {
// Initialize signature object with source document
Signature signature = new Signature("resources/input/sample.pdf");
// Configure text signature options
TextSignOptions options = new TextSignOptions("John Smith");
// Create gradient background
Background background = new Background();
background.setColor(Color.GREEN);
background.setTransparency(0.5f);
LinearGradientBrush brush = new LinearGradientBrush(
Color.GREEN, // Start color
Color.WHITE, // End color
45 // Angle
);
background.setBrush(brush);
options.setBackground(background);
// Set positioning
options.setWidth(100);
options.setHeight(80);
options.setVerticalAlignment(VerticalAlignment.Center);
options.setHorizontalAlignment(HorizontalAlignment.Center);
Padding padding = new Padding();
padding.setTop(20);
padding.setRight(20);
options.setMargin(padding);
// Sign and save
SignResult result = signature.sign(
"resources/output/SignedWithGradient.pdf",
options
);
System.out.println("Success! Signatures applied: " +
result.getSucceeded().size());
signature.dispose();
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Programı resources/input/ klasörüne bir PDF koyarak çalıştırın; çıktı, şık bir degrade imza içerecektir.
Yaygın Kullanım Senaryoları
1. Kurumsal Sözleşme Yönetimi
Farklı onay seviyeleri, farklı degrade renkleriyle görselleştirilebilir—ör. yöneticiler için mavi‑beyaz, hukuk için altın‑beyaz, yöneticiler için koyu‑mavi‑açık‑mavi. Bu görsel hiyerarşi, inceleyenlerin kimlerin imzaladığını anında tanımasını sağlar.
2. Otomatik Fatura İşleme
Faturalara marka renkli ince bir degrade ekleyerek müşterilere e‑posta gönderin. Etki profesyonel görünürken belge okunabilir kalır.
3. Sertifika Oluşturma
Sertifikalarda canlı degrade (mor‑pembe, altın‑sarı) kullanarak resmi ve paylaşmaya değer bir his yaratın. Görsel çekicilik algılanan değeri artırır.
4. Belge Filigranı
Degrade tekniğini şeffaf metinle “Taslak”, “Gizli” veya “Onaylı” filigranları oluşturmak için yeniden kullanın; alttaki içeriği gizlemez. Şeffaflığı 0.7‑0.8 arasında ayarlayın.
Yaygın Sorunların Giderilmesi
Aşağıda, degrade imzalarla çalışırken karşılaştığım (ve çözdüğüm) problemler yer alıyor.
Sorun 1: “Dosya başka bir işlem tarafından kullanılıyor”
Doğrudan yanıt (40‑70 kelime): İstisna, Signature nesnesinin hâlâ açık bir dosya tutamaçını elinde tutması nedeniyle ortaya çıkar. İmzalama sonrası Signature örneğini her zaman kapatın veya serbest bırakın. Try‑with‑resources bloğu kullanmak, dosyanın otomatik olarak serbest bırakılmasını sağlar ve sonraki işlemlerde “dosya kullanımda” hatalarını önler.
Çözüm:
// Always use try‑with‑resources (Java 7+)
try (Signature signature = new Signature("path/to/document.pdf")) {
// Your signing code here
} catch (Exception e) {
// Handle errors
}
// File handle automatically released when try block exits
Veya manuel olarak:
Signature signature = null;
try {
signature = new Signature("path/to/document.pdf");
// Your signing code
} finally {
if (signature != null) {
signature.dispose();
}
}
Sorun 2: İmza görünüyor ancak degrade görünmüyor
Doğrudan yanıt: Degrader, görüntüleyicinin desteği yoksa, şeffaflık 1.0 olarak ayarlanmışsa veya fırça doğru bağlanmamışsa görünmez. PDF görüntüleyiciyi (Adobe Acrobat, Foxit veya modern bir tarayıcı) kontrol edin, şeffaflığı 0.3‑0.7 arasında ayarlayın ve background.setBrush(brush) ile options.setBackground(background) çağrılarının yapıldığından emin olun.
Olası nedenler:
- Görüntüleyici degrade desteklemiyor – modern bir görüntüleyiciyle test edin.
- Şeffaflık çok yüksek – 0.3‑0.7 aralığına düşürün.
- Fırça uygulanmadı – metod çağrılarını iki kez kontrol edin.
Hata ayıklama ipucu: İlk aşamada yüksek kontrastlı renkler (ör. kırmızı‑mavi) kullanarak degrade render edildiğini doğrulayın, ardından ince ayar yapın.
Sorun 3: İmza önemli belge içeriğiyle çakışıyor
Doğrudan yanıt: Çakışma, konumlandırma değerlerinin imzayı mevcut metin veya form alanlarının üzerine yerleştirmesinden kaynaklanır. Boş alanı dinamik olarak hesaplayın ya da sayfa‑seviyesi analizle imzayı otomatik olarak yeniden konumlandırın.
Çözüm kalıbı:
// For documents with content primarily at the top
options.setVerticalAlignment(VerticalAlignment.Bottom);
Padding padding = new Padding();
padding.setBottom(30); // Leave space from bottom edge
options.setMargin(padding);
// For documents that need signatures in specific locations
options.setVerticalAlignment(VerticalAlignment.Top);
options.setHorizontalAlignment(HorizontalAlignment.Left);
padding.setTop(600); // Absolute Y position
padding.setLeft(400); // Absolute X position
options.setMargin(padding);
Sorun 4: Büyük belgelerde performans sorunları
Doğrudan yanıt: Büyük PDF’lerin imzalanması, GroupDocs’un tüm dosyayı işlemesi ve her sayfa için degrade render etmesi nedeniyle yavaşlayabilir. İmzalamayı belirli sayfalara sınırlayın, iki‑renkli basit degradeler kullanın, imza boyutlarını küçültün ve işlemi asenkron çalıştırarak UI’nın yanıt vermesini sağlayın.
Performans örneği:
// Faster configuration
TextSignOptions options = new TextSignOptions("Approved");
options.setWidth(80); // Smaller than default 100
options.setHeight(60); // Smaller than default 80
// Simple horizontal gradient (fastest)
LinearGradientBrush brush = new LinearGradientBrush(
Color.BLUE,
Color.WHITE,
0 // Horizontal gradient
);
Sorun 5: Renk beklentileriyle uyuşmuyor
Doğrudan yanıt: Renk kaymaları, RGB‑den PDF renk uzayına dönüşüm, şeffaflık karışımı veya monitör kalibrasyonu farklarından kaynaklanır. Tam sRGB değerleri kullanın, şeffaflığı orta seviyede (0.3‑0.5) tutun ve farklı görüntüleyicilerde test ederek marka tutarlılığını doğrulayın.
Üretim Uygulamaları İçin En İyi Uygulamalar
| Uygulama | Neden Önemlidir |
|---|---|
| Stilizasyonu bir yardımcı sınıfta merkezileştirin | Tüm belgelerde tutarlı görünüm sağlar |
| Kaynak belgeleri imzalamadan önce doğrulayın | Bozuk dosyaların imzalama hattını kırmasını önler |
| Her imzalama işlemini kaydedin | Uyumluluk için denetim izi oluşturur |
| İstisnaları nazikçe yönetin | Beklenmeyen durumlarda hizmetinizin kararlılığını korur |
| Gerçek‑dünya PDF’leri (formlar, taranmış görüntüler, mevcut imzalar) ile test edin | Degrade renderının tüm senaryolarda çalıştığını garanti eder |
Yardımcı sınıf örneği:
public class SignatureStyles {
public static TextSignOptions getApprovalSignature(String signerName) {
TextSignOptions options = new TextSignOptions(signerName);
Background background = new Background();
background.setTransparency(0.4f);
LinearGradientBrush brush = new LinearGradientBrush(
new Color(0, 102, 204), // Brand blue
Color.WHITE,
45
);
background.setBrush(brush);
options.setBackground(background);
// Standard positioning
options.setWidth(100);
options.setHeight(70);
return options;
}
// Add more style methods as needed
}
Belge doğrulama kod parçacığı:
try {
Signature signature = new Signature("path/to/document.pdf");
// Validate format
if (!"PDF".equalsIgnoreCase(signature.getDocumentInfo().getFileType())) {
throw new IllegalArgumentException("Only PDF files supported");
}
// Ensure at least one page
if (signature.getDocumentInfo().getPageCount() < 1) {
throw new IllegalArgumentException("Document has no pages");
}
// Proceed with signing...
} catch (Exception e) {
// Handle validation errors
}
Kayıt örneği:
SignResult result = signature.sign(outputPath, options);
logger.info("Document signed: " + outputPath);
logger.info("Signatures applied: " + result.getSucceeded().size());
logger.info("Signer: " + signerName);
logger.info("Timestamp: " + LocalDateTime.now());
if (!result.getFailed().isEmpty()) {
logger.warn("Failed signatures: " + result.getFailed().size());
}
İstisna yönetimi kalıbı:
try {
SignResult result = signature.sign(outputPath, options);
return result.getSucceeded().size() > 0;
} catch (GroupDocsSignatureException e) {
logger.error("Signature error: " + e.getMessage());
return false;
} catch (IOException e) {
logger.error("File I/O error: " + e.getMessage());
return false;
} catch (Exception e) {
logger.error("Unexpected error during signing: " + e.getMessage());
return false;
}
İleri Düzey Kullanıcılar İçin Pro İpuçları
İpucu 1: Özel Renk Şemaları Oluşturma
Marka paletlerini bir kez tanımlayın ve yeniden kullanın:
public class BrandColors {
public static final Color PRIMARY = new Color(0, 102, 204);
public static final Color SECONDARY = new Color(102, 178, 255);
public static final Color ACCENT = new Color(255, 193, 7);
public static LinearGradientBrush getPrimaryGradient(int angle) {
return new LinearGradientBrush(PRIMARY, Color.WHITE, angle);
}
}
İpucu 2: Belge Tipine Göre Dinamik Şeffaflık
public static float getOptimalTransparency(Signature signature) {
if (hasComplexBackground(signature)) {
return 0.6f; // More transparent for image‑heavy docs
}
return 0.4f;
}
İpucu 3: İş Parçacığı Havuzlarıyla Toplu İşleme
ExecutorService executor = Executors.newFixedThreadPool(4);
List<String> files = getDocumentsToSign();
for (String file : files) {
executor.submit(() -> {
try {
signDocument(file);
} catch (Exception e) {
logger.error("Failed to sign: " + file, e);
}
});
}
executor.shutdown();
executor.awaitTermination(5, TimeUnit.MINUTES);
İpucu 4: İmza Tipine Göre Koşullu Stil
public static TextSignOptions getStyledSignature(String name, SignatureType type) {
TextSignOptions options = new TextSignOptions(name);
LinearGradientBrush brush;
switch (type) {
case APPROVAL: brush = new LinearGradientBrush(Color.GREEN, Color.WHITE, 45); break;
case REJECTION: brush = new LinearGradientBrush(Color.RED, Color.WHITE, 45); break;
case REVIEW: brush = new LinearGradientBrush(Color.ORANGE,Color.WHITE,45); break;
default: brush = new LinearGradientBrush(Color.BLUE, Color.WHITE,45);
}
Background bg = new Background();
bg.setBrush(brush);
bg.setTransparency(0.5f);
options.setBackground(bg);
return options;
}
Sık Sorulan Sorular
S: Bunu web‑tabanlı bir Java servisi içinde kullanabilir miyim?
C: Evet. GroupDocs.Signature saf Java’dır ve Spring Boot, Jakarta EE veya mikroservis çerçeveleri dahil olmak üzere herhangi bir Java‑tabanlı arka uçta çalışır.
S: Degrade imza PDF’nin boyutunu etkiler mi?
C: Yalnızca çok az. Degrade, görsel bir görünüm akışı olarak saklanır ve genellikle dosyaya birkaç kilobayt ekler.
S: Şifre korumalı PDF’leri nasıl imzalarım?
C: Signature nesnesi oluştururken şifreyi geçin: new Signature("file.pdf", "password").
S: Degrade’ı metin yerine görüntü‑tabanlı bir imzaya uygulamak mümkün mü?
C: Kesinlikle. ImageSignOptions kullanın ve Background’a LinearGradientBrush’ı metin örneğinde olduğu gibi ayarlayın.
S: Lineer yerine radyal degrade istesem?
C: GroupDocs şu anda sadece LinearGradientBrush destekler. Radyal efektler için bir radyal‑degrade PNG oluşturup arka plan görüntüsü olarak kullanabilirsiniz.
Son Güncelleme: 2026-07-25
Test Edilen Versiyon: GroupDocs.Signature 23.12 for Java
Yazar: GroupDocs