Работа с текстом

Вставьте текстовую фигуру на страницу Visio

Aspose.Diagram API позволяет разработчикам вставлять текст в любом месте страницы Visio. Для этого используется метод addText классаСтраница класс принимает параметры PinX, PinY, ширину, высоту и текст.

Вставка примера программирования формы текста

Следующий фрагмент кода добавляет текстовую фигуру в Visio diagram.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(InsertTextShape.class) + "Text/";
// create a new diagram
Diagram diagram = new Diagram();
// set parameters
double PinX = 1, PinY = 1, Width = 1, Height = 1;
String text = "Test text";
// add text to a Visio page
diagram.getPages().getPage(0).addText(PinX, PinY, Width, Height, text);
// save diagram
diagram.save(dataDir + "InsertTextShape_out.vsdx", SaveFileFormat.VSDX);

Обновление Visio Форма текста

Так же каксоздание диаграмм, Aspose.Diagram for Java позволяет работать с фигурами по-разному. В этой статье рассматривается, как получить доступ к тексту в фигурах и обновить его.

Свойство Text, предоставляемоеФорма class, поддерживает объект Aspose.Diagram.Text. Свойство можно использовать для извлечения или обновления текста фигуры.

Ввод diagram

дело:изображение_альтернативный_текст

Diagram после того, как текст в центральной фигуре был изменен с «Процесс» на «Новый текст».

дело:изображение_альтернативный_текст

Процесс обновления текста фигуры прост:

  1. Загрузите diagram.
  2. Найдите определенную форму.
  3. Установите новый текст.
  4. Сохраните номер diagram.

Обновить пример программирования текста формы

Следующий фрагмент кода обновляет текст фигуры. Фигуры идентифицируются по их идентификаторам. Приведенные ниже сегменты кода ищут фигуру с именем process и идентификатором 1 и изменяют ее текст.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(UpdateShapeText.class);
//Call the diagram constructor to load diagram from a VDX file
Diagram diagram = new Diagram(dataDir + "UpdateShapeText.vsd");
// get page by name
Page page = diagram.getPages().getPage("Flow 1");
//Find a particular shape and update its text
for (Shape shape :(Iterable<Shape>) page.getShapes())
{
if (shape.getNameU().toLowerCase() == "process" && shape.getID() == 1)
{
shape.getText().getValue().clear();
shape.getText().getValue().add(new Txt("New Text"));
}
}
// save diagram
diagram.save(dataDir + "UpdateShapeText_Out.vdx", SaveFileFormat.VDX);

Применение встроенной или пользовательской таблицы стилей к фигуре Visio

Microsoft Visio таблицы стилей хранят информацию о форматировании, которую можно применить к фигурам для единообразного внешнего вида. Aspose.Diagram for Java позволяет применять таблицы стилей из приложения.

Свойства TextStyle, FillStyle и LineStyle, предоставляемыеФорма класс поддерживаетAspose.Diagram.StyleSheet объект. Свойство можно использовать для получения информации о стиле и применения пользовательских стилей текста, линий и заливки к diagram.

Ввод diagram

дело:изображение_альтернативный_текст

diagram после применения пользовательской таблицы стилей, определяющей стили текста, линий и заливки

дело:изображение_альтернативный_текст

Пользовательские стили в Microsoft Visio

Чтобы применить пользовательские стили к фигурам в Microsoft Visio:

  1. Откройте diagram в Microsoft Visio.
  2. ВыбиратьОпределить стили отФормат меню (Visio 2007) или щелкните правой кнопкой мышиСтили вПроводник по чертежам окно и выберитеОпределить стили (Visio 2010).
  3. вОпределить стили введите новое имя для пользовательской таблицы стилей. Например, CustomStyle1.
  4. Нажмите наТекст, Линия а такжеНаполнять кнопки для установки стилей текста, линий и заливки соответственно.
  5. НажмитеХОРОШО.

После определения пользовательских таблиц стилей в Microsoft Visio используйте следующий код в приложении Java, чтобы применить пользовательские стили к вашим фигурам. Обратите внимание, что приведенные ниже примеры кода вызывают пользовательскую таблицу стилей, определенную выше: вам необходимо знать имя и расположение применяемой таблицы.

Чтобы применить пользовательские стили программно:

  1. Загрузите diagram.
  2. Найдите фигуру, к которой вы хотите применить стиль.
  3. Загрузите таблицу стилей.
  4. Применение стилей.
  5. Сохраните номер diagram.

Пример программирования применения пользовательских стилей

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(ApplyCustomStyleSheets.class);
//Load diagram
Diagram diagram = new Diagram(dataDir + "ApplyCustomStyleSheets.vsd");
Shape sourceShape = null;
// get page by name
Page page = diagram.getPages().getPage("Flow 1");
//Find the shape that you want to apply style to
for (com.aspose.diagram.Shape shape : (Iterable<Shape>) page.getShapes())
{
if (shape.getName() == "Process") {
sourceShape = shape;
break;
}
}
StyleSheet customStyleSheet = null;
//Find the required style sheet
for (StyleSheet styleSheet : (Iterable<StyleSheet>) diagram.getStyleSheets())
{
if (styleSheet.getName() == "CustomStyle1")
{
customStyleSheet = styleSheet;
break;
}
}
if (sourceShape != null && customStyleSheet != null)
{
//Apply text style
sourceShape.setTextStyle(customStyleSheet);
//Apply fill style
sourceShape.setFillStyle(customStyleSheet);
//Apply line style
sourceShape.setLineStyle(customStyleSheet);
}
//Save the changed diagram as VDX
diagram.save(dataDir + "ApplyCustomStyleSheets_Out.vdx", SaveFileFormat.VDX);

Применение разных стилей к каждому текстовому значению фигуры

Так же каксоздание диаграмм, Aspose.Diagram for Java позволяет работать с фигурами по-разному. Эта статья поможет добавить несколько текстовых значений в фигуру и применить разные стили к каждому текстовому значению.

Добавление текста и стилей фигуры

Ввод diagram

дело:изображение_альтернативный_текст

Diagram после добавления различных текстовых значений в фигуру с различным стилем для каждого текстового значения

дело:изображение_альтернативный_текст

Пример программирования добавления текста и стилей

Следующий фрагмент кода добавляет текст фигуры и различные стили.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(ApplyFontOnText.class);
// load diagram
Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");
// get page by name
Page page = diagram.getPages().getPage("Page-1");
// get shape by ID
Shape shape = page.getShapes().getShape(1);
// clear shape text values and chars
shape.getText().getValue().clear();
shape.getChars().clear();
// mark character run and add text
shape.getText().getValue().add(new Cp(0));
shape.getText().getValue().add(new Txt("TextStyle_Regular\n"));
shape.getText().getValue().add(new Cp(1));
shape.getText().getValue().add(new Txt("TextStyle_Bold_Italic\n"));
shape.getText().getValue().add(new Cp(2));
shape.getText().getValue().add(new Txt("TextStyle_Underline_Italic\n"));
shape.getText().getValue().add(new Cp(3));
shape.getText().getValue().add(new Txt("TextStyle_Bold_Italic_Underline"));
// add formatting characters
shape.getChars().add(new Char());
shape.getChars().add(new Char());
shape.getChars().add(new Char());
shape.getChars().add(new Char());
//set properties e.g. color, font, size and style etc.
shape.getChars().get(0).setIX(0);
shape.getChars().get(0).getColor().setValue("#FF0000");
shape.getChars().get(0).getFont().setValue(1);
shape.getChars().get(0).getSize().setValue(0.22);
shape.getChars().get(0).getStyle().setValue(StyleValue.UNDEFINED);
//set properties e.g. color, font, size and style etc.
shape.getChars().get(1).setIX(1);
shape.getChars().get(1).getColor().setValue("#FF00FF");
shape.getChars().get(1).getFont().setValue(1);
shape.getChars().get(1).getSize().setValue(0.22);
shape.getChars().get(1).getStyle().setValue(StyleValue.BOLD | StyleValue.ITALIC);
//set properties e.g. color, font, size and style etc.
shape.getChars().get(2).setIX(2);
shape.getChars().get(2).getColor().setValue("#00FF00");
shape.getChars().get(2).getFont().setValue(1);
shape.getChars().get(2).getSize().setValue(0.22);
shape.getChars().get(2).getStyle().setValue(StyleValue.UNDERLINE | StyleValue.ITALIC);
//set properties e.g. color, font, size and style etc.
shape.getChars().get(3).setIX(3);
shape.getChars().get(3).getColor().setValue("#3333FF");
shape.getChars().get(3).getFont().setValue(1);
shape.getChars().get(3).getSize().setValue(0.22);
shape.getChars().get(3).getStyle().setValue(StyleValue.BOLD | StyleValue.ITALIC | StyleValue.UNDERLINE);
// save diagram
diagram.save(dataDir + "ApplyFontOnText_Out.vsdx", SaveFileFormat.VSDX);

Найти и заменить текст фигуры

Текст Класс позволяет редактировать текст фигуры. Метод Replace, представленныйТекст class, поддержка изменения текста фигуры. Примеры кода в этой статье находят и заменяют текст фигуры на странице.

Ввод diagram

дело:изображение_альтернативный_текст

diagram после редактирования формы

дело:изображение_альтернативный_текст

Процесс изменения текста фигуры:

  1. Загрузите diagram.
  2. Найдите конкретный текст фигуры.
  3. Заменить текст этой формы
  4. Сохраните номер diagram.

Пример программы поиска и замены текста

Фрагменты кода ниже показывают, как изменить текст фигуры. Код перебирает формы страницы.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(FindAndReplaceShapeText.class);
// load diagram
Diagram diagram = new Diagram(dataDir + "FindReplaceText.vsdx");
DateFormat dateFormat = new SimpleDateFormat("dd/MMMM/yyyy");
Date myDate = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
// Prepare a collection old and new text
Hashtable<String, String> replacements = new Hashtable<String, String>();
replacements.put("[[CompanyName]]", "Research Society of XYZ");
replacements.put("[[CompanyName]]", "Research Society of XYZ");
replacements.put("[[EmplyeeName]]", "James Bond");
replacements.put("[[SubjectTitle]]", "The affect of the internet on social behavior in the industrialize world");
cal.setTime(myDate);
cal.add(Calendar.YEAR, -1);
System.out.println(dateFormat.format(cal.getTime()));
replacements.put("[[TimePeriod]]", dateFormat.format(cal.getTime()) + " -- " + dateFormat.format(myDate));
cal.setTime(myDate);
cal.add(Calendar.DAY_OF_MONTH, -7);
System.out.println(dateFormat.format(cal.getTime()));
replacements.put("[[SubmissionDate]]", dateFormat.format(cal.getTime()));
replacements.put("[[AmountReq]]", "$100,000");
cal.setTime(myDate);
cal.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(dateFormat.format(cal.getTime()));
replacements.put("[[DateApproved]]", dateFormat.format(cal.getTime()));
// Iterate through the shapes of a page
for (Shape shape : (Iterable<Shape>) diagram.getPages().getPage("Page-1").getShapes())
{
Set<String> keys = replacements.keySet();
for(String key: keys)
{
for (FormatTxt txt : (Iterable<FormatTxt>) shape.getText().getValue())
{
Txt tx = (Txt)((txt instanceof Txt) ? txt : null);
if (tx != null && tx.getText().contains(key))
{
//find and replace text of a shape
tx.setText(tx.getText().replace(key, replacements.get(key)));
}
}
}
}
// Save the diagram
diagram.save(dataDir + "FindAndReplaceShapeText_Out.vsdx", SaveFileFormat.VSDX);

Извлечь обычный текст со страницы Visio Diagram

Aspose.Diagram API позволяет разработчикам извлекать обычный текст со страницы Visio diagram. Они также могут перебирать страницы Visio diagram, чтобы охватить весь текст Visio diagram.

Microsoft Office Visio добавляет текст к фигурам.Форма class содержит элемент с именем Text, который содержит символы текста и специальные элементы (cp, pp, tp и fld), отмечающие конец одного цикла и начало следующего.

Пример извлечения простого текста

Следующий фрагмент кода перебирает формы страницы Visio и фильтрует обычный текст без информации о форматировании.

// For complete examples and data files, please go to https://github.com/aspose-diagram/Aspose.Diagram-for-Java
static String text = "";
public static void main(String[] args) throws Exception
{
// The path to the documents directory.
String dataDir = Utils.getDataDir(GetPlainTextOfVisio.class);
// load diagram
Diagram diagram = new Diagram(dataDir + "Drawing1.vsdx");
// get Visio diagram page
Page page = diagram.getPages().getPage("Page-1");
// iterate through the shapes
for (Shape shape :(Iterable<Shape>) page.getShapes())
{
// extract plain text from the shape
GetShapeText(shape);
}
// display extracted text
System.out.println(text);
}
private static void GetShapeText(Shape shape)
{
// filter shape text
if (shape.getText().getValue().getText() != "")
text += (shape.getText().getValue().getText().replaceAll("\\<.*?>",""));
// for image shapes
if (shape.getType() == TypeValue.FOREIGN)
text += (shape.getName());
// for group shapes
if (shape.getType() == TypeValue.GROUP)
for(Shape subshape : (Iterable<Shape>) shape.getShapes())
{
GetShapeText(subshape);
}
}