Работа с текстом
Вставьте текстовую фигуру на страницу 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 после того, как текст в центральной фигуре был изменен с «Процесс» на «Новый текст».
Процесс обновления текста фигуры прост:
- Загрузите diagram.
- Найдите определенную форму.
- Установите новый текст.
- Сохраните номер 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:
- Откройте diagram в Microsoft Visio.
- ВыбиратьОпределить стили отФормат меню (Visio 2007) или щелкните правой кнопкой мышиСтили вПроводник по чертежам окно и выберитеОпределить стили (Visio 2010).
- вОпределить стили введите новое имя для пользовательской таблицы стилей. Например, CustomStyle1.
- Нажмите наТекст, Линия а такжеНаполнять кнопки для установки стилей текста, линий и заливки соответственно.
- НажмитеХОРОШО.
После определения пользовательских таблиц стилей в Microsoft Visio используйте следующий код в приложении 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(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 после редактирования формы
Процесс изменения текста фигуры:
- Загрузите 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(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); | |
} | |
} |