کار با لایه‌های متن در Aspose.PSD برای جاوا

بررسی

بررسی

Aspose.PSD برای جاوا یک کتابخانه قوی طراحی شده برای کار با فایل‌های PSD (اسناد فتوشاپ) به صورت بی‌درنگ در برنامه‌های جاوا است. این کتابخانه از بین ویژگی‌های بسیار خود، پشتیبانی جامع برای ویرایش لایه‌های متن در فایل‌های PSD را ارائه می‌دهد. در این مقاله، به دو روش متمایز از ویرایش متن در فایل‌های PSD با استفاده از Aspose.PSD برای جاوا می‌پردازیم - روش ساده و روش پیچیده‌تری با استفاده از بخش‌های متن.

روش ساده برای به‌روزرسانی لایه متن به‌روزرسانی یک لایه متن در یک فایل PSD با استفاده از Aspose.PSD برای جاوا بسیار ساده است. روش updateText کلاس TextLayer امکان به‌روزرسانی آسان محتوای متن در یک لایه متن را فراهم می‌کند. کد نمونه زیر، روش ساده به‌روزرسانی یک لایه متن را نشان می‌دهد:

public class Main {
public static void main(String[] args) {
String sourceFile = "text212.psd";
String outputFile = "Output_text212.psd";
try (PsdImage image = (PsdImage) PsdImage.load(sourceFile)) {
TextLayer simpleText = (TextLayer) image.getLayers()[2];
simpleText.updateText("Update", Color.getRed());
image.save(outputFile);
}
}
}

ویرایش با استفاده از بخش متن روش پیشرفته برای به‌روزرسانی لایه متن با استفاده از بخش‌های متن: در حالی که رویه ساده برای ویرایش‌های اساسی متن کافی است، اگر کنترل دقیق‌تر بر روی سبک و قالب‌بندی متن لازم باشد، استفاده از بخش‌های متن یک راه‌حل قدرتمندتر ارائه می‌دهد. بخش‌های متن امکان تعیین استایل‌ها و پاراگراف‌های مختلف در یک لایه متن را فراهم می‌کنند. کد نمونه زیر این رویه را نمونه‌ای ارائه می‌دهد:

public class Main {
public static void main(String[] args) {
String sourceFile = "text212.psd";
try (PsdImage image = (PsdImage) PsdImage.load(sourceFile)) {
// Assuming the necessary imports and classes are available
TextLayer textLayer = (TextLayer) image.getLayers()[1];
IText textData = textLayer.getTextData();
ITextStyle defaultStyle = textData.producePortion().getStyle();
ITextParagraph defaultParagraph = textData.producePortion().getParagraph();
defaultStyle.setFillColor(Color.fromName("DimGray"));
defaultStyle.setFontSize(51);
textData.getItems()[1].getStyle().setStrikethrough(true);
String[] strings = new String[]{"E=mc", "2\r", "Bold", "Italic\r", "Lowercasetext"};
ITextPortion[] newPortions = textData.producePortions(
strings,
defaultStyle,
defaultParagraph
);
newPortions[0].getStyle().setUnderline(true);
newPortions[1].getStyle().setFontBaseline(FontBaseline.Superscript);
newPortions[2].getStyle().setFauxBold(true);
newPortions[3].getStyle().setFauxItalic(true);
newPortions[3].getStyle().setBaselineShift(-25);
newPortions[4].getStyle().setFontCaps(FontCaps.SmallCaps);
for (ITextPortion newPortion : newPortions) {
textData.addPortion(newPortion);
}
textData.updateLayerData();
}
}
}

در کد ارائه شده، ابتدا به لایه متن مقصد برای به‌روزرسانی متن دسترسی می‌یابیم (به‌عنوان مثال: image.getLayers()[1]). در ادامه، از شیء textData از لایه متن استفاده می‌کنیم که امکان مدیریت بخش‌های متن را فراهم می‌کند. اشیاء استایل پیش‌فرض و پاراگراف پیش‌فرض (به‌ترتیب defaultStyle و defaultParagraph) برای خدمت در عنوان استایل و پاراگراف برای بخش‌های متن ایجاد می‌شوند.

سپس بخش‌های متنی که باید در لایه متن درج شوند را تعریف می‌کنیم. هر بخش یک قطعه متن متمایز با استایل و قالب‌بندی منحصربه‌فرد خود را نمایندگی می‌کند. در این مثال، پنج بخش متن - “E=mc”, “2\r”, “Bold”, “Italic\r”, و “Lowercasetext” - را مشخص می‌کنیم و در عین حال استایل‌هایشان را تنظیم می‌نماییم.

در مرحله بعد، بر فقره‌های جدید پیمایش می‌کنیم و آن‌ها را به شیء textData با استفاده از متد addPortion اضافه می‌کنیم. در نهایت، فراخوانی متد updateLayerData شیء textData، به به‌روزرسانی لایه متن با بخش‌های متن تعریف شده جدید کمک می‌کند.

نتیجه Aspose.PSD برای جاوا قابلیت‌های قوی برای مدیریت متن در فایل‌های PSD ارائه می‌دهد. آیا نیاز دارید محتوای متن را به‌روزرسانی کنید یا قالب‌بندی و استایل پیشرفته را پیاده‌سازی کنید، Aspose.PSD برای جاوا ابزارهای لازم را فراهم می‌سازد. با استفاده از روش ساده یا روش پیچیده‌تری با استفاده از بخش‌های متن، مدیریت بی‌درنگ لایه‌های متن در فایل‌های PSD قابل دستیابی است.

لطفاً برای جزئیات بیشتر به مثال کامل مراجعه کنید.

نمونه

public class TextLayerUpdatingTest {
public static void main(String[] args) {
String sourceFile = "text212.psd";
String outputFile = "Output_text212.psd";
try (PsdImage img = (PsdImage) PsdImage.load(sourceFile)) {
// Simple way to update text layer
TextLayer simpleText = (TextLayer) img.getLayers()[2];
simpleText.updateText("Update", Color.getRed());
// More powerful way to update text layer - using Text Portions with different styles and paragraphs
TextLayer textLayer = (TextLayer) img.getLayers()[1];
IText textData = textLayer.getTextData();
ITextStyle defaultStyle = textData.producePortion().getStyle();
ITextParagraph defaultParagraph = textData.producePortion().getParagraph();
defaultStyle.setFillColor(Color.fromName("DimGray"));
defaultStyle.setFontSize(51);
textData.getItems()[1].getStyle().setStrikethrough(true);
// Update text styles for different portions
ITextPortion[] newPortions = textData.producePortions(new String[]{
"E=mc",
"2\r",
"Bold",
"Italic\r",
"Lowercasetext"},
defaultStyle,
defaultParagraph
);
newPortions[0].getStyle().setUnderline(true); // Edit text style "E=mc"
newPortions[1].getStyle().setFontBaseline(FontBaseline.Superscript); // Edit text style "2\r"
newPortions[2].getStyle().setFauxBold(true); // Edit text style "Bold"
newPortions[3].getStyle().setFauxItalic(true); // Edit text style "Italic\r"
newPortions[3].getStyle().setBaselineShift(-25); // Edit text style "Italic\r"
newPortions[4].getStyle().setFontCaps(FontCaps.SmallCaps); // Edit text style "Lowercasetext"
for (ITextPortion newPortion : newPortions) {
textData.addPortion(newPortion);
}
textData.updateLayerData();
img.save(outputFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}