Размещение нескольких изображений в текстовый файл

Автор Bib-chan, 8 ноября 2014, 00:53

0 Пользователи и 1 гость просматривают эту тему.

Bib-chan

Доброго времени суток! Подскажите, пожалуйста, есть ли способы быстрого размещения изображений в документ так, чтобы каждое изображение было помещено на отдельной странице? Необходимо создать документ из отсканированных страниц, сохранённых в виде изображений. Сначала я вставлял изображения в документ по одному и после каждого вставлял разрыв страницы. Но так вставлять их в документ оказалось слишком накладно, т.к. всего их по 100-200 шт. Пытался решить данную проблему с помощью макросов VBA, но я, к сожалению, весьма плохо владею этим языком для реализации искомой задачи.
Очень надеюсь на вашу помощь.

rami

Цитата: Bib-chan от  7 ноября 2014, 22:53Подскажите, пожалуйста, есть ли способы быстрого размещения изображений в документ так, чтобы каждое изображение было помещено на отдельной странице?
В принципе есть, но чтобы не задавать слишком много вопросов что и как вы хотите делать, создайте вручную документ в качестве образца с тремя изображениями и выложите на форуме. Посмотрим.

Bib-chan

Цитата: rami от  8 ноября 2014, 19:30создайте вручную документ в качестве образца с тремя изображениями и выложите на форуме. Посмотрим.
Вот пример.

rami

Цитата: Bib-chan от  7 ноября 2014, 22:53Необходимо создать документ из отсканированных страниц, сохранённых в виде изображений.
Я полагал, что речь идёт о сканированных  изображениях или текстах в формате A4.
Если страницы будут вперемешку в книжной и альбомной ориентации, да ещё и разных размеров, то это усложнит решение, а если ориентация будет одинаковая для всех страниц, то при одинаковых размерах изображений скорость загрузки будет 5 — 10 в секунду, а при разных 1 в секунду, плюс сохранение изображений в файле примерно 1 секунда на 1 изображение. Изображения должны быть в одной папке, макрос их перебирает и загружает.

Bib-chan

Цитата: rami от 12 ноября 2014, 19:07Если страницы будут вперемешку в книжной и альбомной ориентации, да ещё и разных размеров, то это усложнит решение, а если ориентация будет одинаковая для всех страниц, то при одинаковых размерах изображений скорость загрузки будет 5 — 10 в секунду, а при разных 1 в секунду, плюс сохранение изображений в файле примерно 1 секунда на 1 изображение.
Скорость обработки 1 файл в секунду меня вполне устраивает, если учитывать то, что в ручную на создание одного документа у меня уходило по три часа.
Цитата: rami от 12 ноября 2014, 19:07Изображения должны быть в одной папке, макрос их перебирает и загружает.
Это и предполагалось. Но такой вопрос: нужно ли изображениям содержать в названии определённый коэффициент (001.jpg, 002.png...), или их названия могут быть произвольными, лишь бы по порядку?

Дело в том, что я уже пытался написать такой макрос самостоятельно. Были мысли: например, прежде чем вставлять определённый разрыв страницы (книжный/альбомный), я решил проверять соотношение сторон сравнением высоты и ширины картинки. Но мои знания синтаксиса языка VBA слишком слабы для реализации такой идеи.

rami

#5
Цитата: Bib-chan от 14 ноября 2014, 20:59Но мои знания синтаксиса языка VBA слишком слабы для реализации такой идеи.
Я надеюсь, что вам нужен макрос на StarBasic как в LibreOffice или OpenOffice, а не VBA. Какой у вас Офис?
Цитата: Bib-chan от 14 ноября 2014, 20:59Но такой вопрос: нужно ли изображениям содержать в названии определённый коэффициент (001.jpg, 002.png...), или их названия могут быть произвольными, лишь бы по порядку?
Зависит от алфавитного порядка названий (названия сортируются как текст, а не как числа).
Изображения независимо от исходных размеров растягиваются/сжимаются по ширине до 17 сантиметров, а высота пропорционально ширине. Если картинки маленькие по высоте, то будет несколько картинок на странице, но если нужно их можно легко сдвигать вниз.
Для начала потренируйтесь на папке с 5 картинками. Формат PDF для картинок не подходит.
В макросе найдите строку:
sPath="file:///путь/к/папке/название папки/"   'это путь к папке
и напишите путь к вашей папке.
После импорта изображений их нужно будет сохранить в документе, как я напишу позже.

Bib-chan

Цитата: rami от 14 ноября 2014, 22:05Я надеюсь, что вам нужен макрос на StarBasic как в LibreOffice или OpenOffice, а не VBA.
Да, я, всё-таки, имел в виду StarBasic.
И спасибо Вам большое, ваш скрипт работает! Осталось его доработать, но это уже будет проще.

yurum

#7
ну тема уже давно была и у меня файл * Вставить картинки.odt (12.31 Кб - загружено 53 раз.) не грузится, у меня такой вопрос, как в LibreOffice 6.1 загрузить много картинок, все картинки одинаковые по размеру на одну страницу, к примеру я захожу суда
http://gpntb.dlibrary.org/ru/nodes/7184-osnovy-tehniki-silnyh-tokov-b-ugrimov-g-gensel-t-2-1922-peremennye-toki-m-1922#mode/inspect/page/24/zoom/4
начиная с первой или последней страницы сохраняю файлы рисунков страниц в определённую папку, LibreOffice загружает все файлы рисунков по дате, пусть это длится долго хоть час хоть 5 часов, на ночь оставил, потом я  смотрю и сохраняю всё в PDF документ
как это сделать, или может есть какая другая программа для этого

rami

#8
Попробуйте строку кода:
sPath="file:///путь/к/папке/название папки/"   'это путь к папке

заменить на:
sPath=ConvertToURL("/путь/к/папке/название папки/")   'это путь к папке

естественно, с вашими путями.

P.S. но мне кажется, что загрузка 500+ изображений может быть проблемна. Попробуйте сначала загрузить несколько изображений.

yuri

Добрый день, rami.

Спасибо за макрос.

Если вас не затруднит, как можно модифицировать макрос, чтобы он вставлял изображения начиная с текущей (последней) страницы, на которой расположен курсор?

При попытке загрузить изображения в конце текстового документа они начинают размещаться начиная с первой страницы, а текст сдвигается.

rami

Цитата: yuri от 19 июня 2019, 14:07Если вас не затруднит, как можно модифицировать макрос, чтобы он вставлял изображения начиная с текущей (последней) страницы, на которой расположен курсор?
Если вы хотите, чтобы изображения вставлялись в конец документа, сразу после строчки oCursor.goToStart(False) напишите oCursor.goToEnd(False) (курсор "прыгнет" в начало документа, а затем в конец).

yuri

Цитата: rami
Если вы хотите, чтобы изображения вставлялись в конец документа, сразу после строчки oCursor.goToStart(False) напишите oCursor.goToEnd(False) (курсор "прыгнет" в начало документа, а затем в конец).
Ура, работает! Спасибо.
Тогда может быть строку oCursor.goToStart(False) закомментировать?
Попробовал, так тоже работает.  :)

rami

Цитата: yuri от 19 июня 2019, 17:48Тогда может быть строку oCursor.goToStart(False) закомментировать?
Можно.