Имя: Пароль:
1C
1С v8
Узнать количество страниц в файле odt
,
0 Olga_Om
 
23.11.18
07:50
Здравствуйте, уже несколько дней бьюсь над проблемой, нужно вычислить количество страниц в odt файле (Libreoffice).
OOДокумент = Desktop.loadComponentFromURL(ПреобразоватьВURL(Имяфайла), "_blank", 0, Args);
Pages = OOДокумент.PagesCount();  - метод объекта не обнаружен
Pages = OOДокумент.getSheets; - метод объекта не обнаружен
Pages = OOДокумент.getSheets.GetCount();- метод объекта не обнаружен
Pages = OOДокумент.Sheets.GetCount;- метод объекта не обнаружен

Как получить количество страниц??? Прошу помочь.
1 МихаилМ
 
23.11.18
10:36
Sheets.GetCount()
2 Olga_Om
 
23.11.18
10:51
Sheets.GetCount() - выдает ошибку поле объекта не обнаружено. Я так понимаю, что sheets можно использовать только для calc, у меня же файл Writer.
3 asady
 
23.11.18
11:01
unzip -p sample.odt meta.xml | grep -oP '(?<=page-count=")[ A-Za-z0-9]*'
работает я проверил
4 Olga_Om
 
23.11.18
11:42
А в моем случае как мне этим воспользоваться? =(
5 asady
 
23.11.18
11:48
(4) unzip-ом достаешь meta.xml
потом парсишь этот файл на предмет поиска значения параметра page-count (это и в 1С делается просто, можно и команду найти)
6 Olga_Om
 
23.11.18
12:19
(5) Спасибо! Попробую. Думала можно как-то проще =(
7 Garykom
 
гуру
23.11.18
12:29
8 Olga_Om
 
28.11.18
12:33
В общем, количество листов нашла, но это мне не помогло... В чем вообще заключается моя задача, мне программно нужно открыть документ Openoffice writer и на каждой странице в колонтитул занести штрихкод.
Сначала хотела зациклить вставку штрихкода по количеству страниц, не привязываясь к колонтитулу, а просто указав на странице место для вставки, но не понимаю как перелистывать программно страницы и указать куда именно нужно вставить штрихкод. Поэтому решила добавить штрихкод в колонтитул на первой странице и он автоматом отобразиться на других. Самый простой способ сделать это через xml, на мой взгляд. Но где там хранится разделитель и как подсунуть туда мой штрихкод - не знаю =(((((
9 asady
 
28.11.18
12:56
(8) может проще сделать сразу печатную форму с ШК и сохранить в формате odt
10 Кирпич
 
28.11.18
13:10
(8)Если штрихкоды одинаковые, то нужно один раз в колонтитул вставить и всё. Зачем страницы считать. А вабще (9)
11 Garykom
 
гуру
28.11.18
13:12
(8) >Самый простой способ сделать это через xml, на мой взгляд. Но где там хранится разделитель и как подсунуть туда мой штрихкод - не знаю

Создай вручную файлик с парой разных ШК в виде картинок "в колонтитулах", затем поизучай XML полученный внутри zip архива.
Картинки буду внутри папки "Pictures" а куда и как их вставлять внутри "content.xml" в примерно таком виде:

<draw:frame draw:name="Изображение1" draw:z-index="1" svg:height="1.284cm" svg:width="3.122cm" svg:y="2.08cm" svg:x="15.871cm" text:anchor-page-number="1" text:anchor-type="page" draw:style-name="fr1">
<draw:image xlink:actuate="onLoad" xlink:show="embed" xlink:type="simple" xlink:href="Pictures/10000000000000BF000000A52ECB4ED6379F0DA3.png"/>
</draw:frame>

Это если привязка к странице
12 Olga_Om
 
28.11.18
13:19
(9) Использовать печатную форму не получится, потому как речь идет о готовых openoffice документах договоров.
(11) Спасибо! Попробую.
13 VS-1976
 
28.11.18
13:45
(0) Как минимум GetSheets нужно писать так GetSheets(). Иначе 1С не будет считать что это вызов метода.
14 VS-1976
 
28.11.18
13:49
(7) Из статьи по идее количество страниц берётся так:

OOДокумент.getCurrentController().PageCount
15 VS-1976
 
28.11.18
14:01
(14) или так OOДокумент.getCurrentController().PageCount()
16 SSSSS_AAAAA
 
28.11.18
14:12
(8) Разделитель не хранится. Хранится содержимое колонтитула. Посмотрите как это делается на любом хотя бы пустом документе с колонтитулом.
17 VS-1976
 
28.11.18
14:18
http://www.openoffice.org/development/releases/2.4.0_sdk.html

Вот тут в sdk можно поискать если что
18 Garykom
 
гуру
28.11.18
14:20
(16) Чтобы были разные колонтитулы на разных страницах их надо "разделять разделителями" для смены "стиля"
19 Olga_Om
 
29.11.18
06:30
(11) Если добавлять картинку в колонтитул, то в content.xml ничего не записывается, это всё пишется в styles.xml, мне осталось понять как добавить новый тег в xml и в какое место правильно это сделать, потому как если документ изначально был без колонтитула, то в styles вообще нет блока footer где хранятся эти данные. Буду изучать xml, другого варианта нет. Спасибо!

(14)  OOДокумент.getCurrentController().PageCount()  - не работает,
(15)  OOДокумент.getCurrentController().PageCount() - не работает.
20 SSSSS_AAAAA
 
29.11.18
09:55
(19) В общем-то, количество страниу -величина вычисляемая непрерывно в процессе редактирования документа. Ибо очень сильно зависит параметров устройства вывода. В любом случае знание этой величины на расстановку и заполнение колонтитулов никак не влияет. обратное же действие - заполнение колонтитулов - на количество страниц влияет очень сильно. Короче, оставьте количество страниц в покое.
21 Olga_Om
 
29.11.18
11:50
(20) Да уже оставила. Но с колонтитулами еще сложнее =(
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший