Работа с текстови слоеве в Aspose.PSD за Java

Преглед

Преглед

Aspose.PSD за Java е издръжлива библиотека, проектирана за работа с PSD (Photoshop Document) файлове безпроблемно в приложения на Java. Сред многото си функции, тази библиотека предлага обширна поддръжка за редакция на текстови слоеве в PSD файлове. В тази статия ще разгледаме два различни метода за редактиране на текст в PSD файлове с използване на Aspose.PSD за Java - простият подход и по-сложният метод, използващ текстови порции.

** Прост начин за актуализиране на текстов слой ** Актуализирането на текстов слой в PSD файл с използване на Aspose.PSD за Java е просто. Методът 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 за Java предлага здрави възможности за манипулиране на текст в PSD файлове. Независимо дали се изисква актуализиране на текстово съдържание или прилагане на напреднал стил и форматиране, Aspose.PSD за Java предоставя необходимите инструменти. Чрез използване на простия подход или по-сложния метод, използващ текстови порции, се постига безпроблемно манипулиране на текстови слоеве в 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();
}
}
}