Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 12
1

Извлечение координат из XPS

18.08.2017, 12:46. Показов 1843. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, пожалуйста, как с помощью C# найти и извлечь из файла XPS координаты (OriginX, OriginY) определенного слова (20 строка)?

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<FixedPage xmlns="http://schemas.microsoft.com/xps/2005/06" xmlns:x="http://schemas.microsoft.com/xps/2005/06/resourcedictionary-.." xml:lang="en-us" Width="793.733317057" Height="1122.533365885" Name="Page1"> 
<Canvas RenderTransform="1.333333373,0,0,1.333333373,0,0"> 
<Canvas RenderTransform="0.75069356,0,0,0.750356555,0,0" Clip="M0,0 L793,0 L793,1122 L0,1122 Z"> 
<Canvas> 
<Canvas RenderTransform="1.333333373,0,0,1.333333373,0,0"> 
<Path Data="M0,0 L595,0 L595,841 L0,841 Z"> 
<Path.Fill> 
<SolidColorBrush Color="#FFFFFFFF" /> 
</Path.Fill> 
</Path> 
</Canvas> 
</Canvas> 
<Canvas> 
<Canvas RenderTransform="1.333333373,0,0,1.333333373,0,0"> 
<Canvas RenderTransform="1,0,0,1,0,0"> 
<Canvas> 
<Canvas RenderTransform="1,0,0,1,85.054504395,67.183319092">
<Canvas RenderTransform="1,0,0,1,0,0"> 
<Glyphs OriginX="0" OriginY="0" UnicodeString="m1" Fill="#FF000000" FontRenderingEmSize="11.010172844" FontUri="/Resources/f923428d-d71a-4021-8c4c-bf0f711f3743.odttf" /> 
</Canvas> 
</Canvas> 
</Canvas> 
</Canvas> 
</Canvas> 
</Canvas> 
</Canvas> 
</Canvas> 
</FixedPage>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2017, 12:46
Ответы с готовыми решениями:

Извлечение координат из массива PointF[]
Доброго времени суток! Такая вот задачка: я создал коллекцию для хранения точек public class...

Извлечение координат активного объекта (CDraw)
Добрый день, Недавно начал изучать самостоятельно VBA, но в процессе написания первого же...

Извлечение чисел из строки (частичное извлечение)
Добрый день! Прошу помочь облегчить жизнь работяге офисного планктона (т.е. мне) :D Неотъемлемой...

Dell XPS 13
Всем привет ! Скажите подойдёт ли dell xps 13 в качестве рабочей машинки?)А точнее для...

2
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
19.08.2017, 02:31 2
Лучший ответ Сообщение было отмечено freeclips27 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Xml.Linq;
using System.Xml.XPath;
 
/// <summary>
/// Координаты текста
/// </summary>
/// <param name="xml">Путь к документу xps</param>
/// <param name="text">Искомый текст</param>
static private Tuple<double, double> GetTextOrigin(string xml, string text)
{
    var doc = XDocument.Load(xml);
    var glyph = doc.Root.XPathSelectElement(string.Format("//*[@UnicodeString='{0}']", text));
    if (glyph == null)
    {
        return new Tuple<double, double>(double.NaN, double.NaN);
    }
    return new Tuple<double, double>(double.Parse(glyph.Attribute("OriginX").Value),
        double.Parse(glyph.Attribute("OriginY").Value));
}
Но смысла в этом мало, потому что координаты определяются по RenderTransform, которые в свою очередь являются матрицами аффинных преобразований
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Canvas RenderTransform="1.333333373,0,0,1.333333373,0,0">
  <Canvas RenderTransform="1,0,0,1,0,0">
    <Canvas>
      <Canvas RenderTransform="1,0,0,1,85.054504395,67.183319092">
        <Canvas RenderTransform="1,0,0,1,0,0">
          <Glyphs OriginX="0"
                  OriginY="0"
                  UnicodeString="m1"
                  Fill="#FF000000"
                  FontRenderingEmSize="11.010172844"
                  FontUri="/Resources/f923428d-d71a-4021-8c4c-bf0f711f3743.odttf" />
        </Canvas>
      </Canvas>
    </Canvas>
  </Canvas>
</Canvas>
Преобразования тут два: в 1 и 4 строке. Сначала применяется 4 строка, выполняющая смещение, затем 1 строка — масштабирование
1
0 / 0 / 0
Регистрация: 23.03.2017
Сообщений: 12
20.08.2017, 12:23  [ТС] 3
Спасибо за ответ!

Нужны координаты UnicodeString="m1", чтобы потом по этим координатам размещать картинку на PDF.
Я правильно понял, что нужно извлекать из файла .xps значения RenderTransform?
0
20.08.2017, 12:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2017, 12:23
Помогаю со студенческими работами здесь

PDF to XPS
Всем привет. Давно интересует вопрос: Нет ли у кого на примете библиотеки, для перевода PDF...

Файлы XPS
Как средствами 1С считать информацию из файла с расширением XPS? И вообще это возможно? ...

Ошибка копирования в xps
При попытке копирования текста из документа xps он просто вылетает. Что делать?

Сохранение из TextBox в xps
Здравствуйте! Подскажите пожалуйста, как сохранить отформатированный текст из TextBox в xps файл?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru