Файлы Visio могут включать фигуры, соединители, изображения или текст для изображения различных схем, которые используются для создания диаграмм, таких как организационные диаграммы, блок-схемы и т. д. В некоторых сценариях может потребоваться найти и заменить некоторый текст в формате VSD или VSDX. Схема Визио. Соответственно, в этой статье объясняется, как программно находить и заменять текст в рисунках Visio на Java.
- Поиск и замена текста в диаграмме Visio — установка Java API
- Программный поиск и замена текста в диаграмме Visio на Java
Поиск и замена текста в диаграмме Visio — установка Java API
Aspose.Diagram for Java API поддерживает работу с различными форматами файлов Visio, включая VSD, VSDX, VSDM, VSSX и т. д. Вы можете загрузить файлы JAR из раздела Загрузки или использовать следующие конфигурации в файле pom.xml вашего проекта, чтобы получить доступ к API из репозитория Aspose:
Репозиторий:
<repositories>
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
</repositories>
Зависимость:
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-diagram</artifactId>
<version>22.4</version>
<classifier>jdk16</classifier>
</dependency>
</dependencies>
Программный поиск и замена текста в диаграмме Visio на Java
Вы можете найти и заменить текст в файле Visio формата VSD VSDX, выполнив следующие действия:
- Создайте коллекцию строк для поиска и замены текста.
- Загрузите исходный файл схемы Visio и просмотрите текст в каждой фигуре.
- Запишите выходной файл схемы Visio.
В приведенном ниже примере кода показано, как программно найти и заменить текст в файле Visio с помощью Java:
// Загрузите входную диаграмму
Diagram diagram = new Diagram("FindReplaceText.vsdx");
DateFormat dateFormat = new SimpleDateFormat("dd/MMMM/yyyy");
Date myDate = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
// Подготовьте коллекцию старого и нового текста
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()));
// Итерация по формам страницы
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))
{
// Найти и заменить текст фигуры
tx.setText(tx.getText().replace(key, replacements.get(key)));
}
}
}
}
// Сохраните диаграмму
diagram.save("FindReplaceText_Out.vsdx", SaveFileFormat.VSDX);
Вывод
Итак, вы поняли, как находить и заменять текст на схемах Visio. Вы также можете импровизировать фрагмент кода для работы с другими перегрузками метода replace. Например, замена всех вхождений совпадающего текста или только первого вхождения поискового запроса в файле Visio. Вы можете посетить раздел документация, чтобы узнать о некоторых других функциях для управления или преобразования файлов MS Visio. Если вам необходимо обсудить какие-либо вопросы или требования, свяжитесь с нами на форуме.
Смотрите также
[Преобразование файла Visio VSD или VSDX в XAML на Java] (https://blog.aspose.com/ru/2022/02/28/convert-visio-to-xaml-java/)