Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Узнать количество страниц в файле odt

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует