169 похожих чатов

Задача, на которую я *пока* не нашел ответ... Есть небольшое приложение,

которое в DOC вставляет текст из пользовательской формы. Текст всегда разный и разных размеров. Постоянное - это заголовки разделов. Перед новым заголовком обязательно использую body.appendPageBreak() , чтобы следующий раздел был с новой страницы.

Но, бывает редкая ситуация, когда последний параграф перед вставкой appendPageBreak() оказывается на последней строчке страницы и тогда следующая страница оказывается полностью пустая, так как ее занимает вставленный pageBreak. Нужно избежать этой пустой страницы и как-то определить, что текст занимает последнюю строчку в предыдущем листе и вставлять разрыв страницы не нужно.

Пытался найти вариант определить положение текста, кол-во страниц, последний номер страницы - безрезультатно, в docs api не нашел, а в appscript и подавно 😰
Есть ли у кого-то идеи, как можно-то (и можно-ли вообще) такую проблему победить?

п.с. не, конечно можно конвертировать во временные pdf до и после вставки разрыва страницы, посчитать сторонним API число страниц там и там, и, если не совпадает, значит pageBreak не вставлять. Но, я надеюсь, существует более элегантный способ 😂

7 ответов

17 просмотров

Если правильно понял - то в голову пришел один костыльный вариант. Вместо одного документа для всех разделов - создавать новый документ для каждого раздела, а для набора таких документов создавать папку. Дальше либо работать с этим, либо как-то склеивать документы, если это возможно) Не совсем как вариани, но как пища для размышления

К сожалению, проблема расчета страниц не решена. Скорее всего это даже не проблема Документов, а верстальщика, не примите лично, но то разрывы есть то их нет, это какой-то Уральский, и автоматического компоновщика на бумагу, т.е. принтера. Могу привести несколько примеров, почему я так думаю, но не в этом суть. Суть в том, что Гугл даже не пытался решить эту проблему, а ей стлько лет, сколько используются Скрипты для компоновки Документов.

Dmitry- Автор вопроса
Alexander Ivanov
К сожалению, проблема расчета страниц не решена. С...

Я понял... Вобщем, костыльное решение заработало, с созданием копии документа, pdf до и pdf после appendBrake. А кол-во страниц в PDF считаю этой функцией function getNumberofPages() { var myFolder = DriveApp.getFoldersByName("Test").next(); var files = myFolder.searchFiles('title contains ".PDF"'); while (files.hasNext()) { var file = files.next(); var n = file.getBlob().getDataAsString().split("/Contents").length - 1; Logger.log("fileName: %s, totalPages: %s", file.getName(), n) } } Конечно, по времени ужас, анализ 7 брейков добавило + минуту к выполнению скрипта. Но за неимением другого и это решение)

Dmitry
Я понял... Вобщем, костыльное решение заработало, ...

Да, так можно решать. Правда, когда файлы по 50-100 страниц уже совсем плохо.

Dmitry- Автор вопроса
Alexander Ivanov
Да, так можно решать. Правда, когда файлы по 50-10...

Та да.. но пока файлы по 10-20 страниц - временно покатит.

Dmitry
Я понял... Вобщем, костыльное решение заработало, ...

Для чего искать в папке pdf файлы если две версии pdf можете сравнить в блобах?

Dmitry- Автор вопроса
Роман Игнатов
Для чего искать в папке pdf файлы если две версии ...

я так и делаю..скрипт, который я скинул, я взял отсюда //https://stackoverflow.com/questions/54019355/count-total-number-of-pages-in-pdf-file и переделал под мои нужды. Кстати, ссылка хорошая, несколько вариантов как считать число страниц pdf, может, кому-то пригодится

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта