Программа сохранения в PDF

Автор Andreych, 29.09.18, 19:58:17

« предыдущая - следующая »

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

DesignЯR

Вот теперь с Memo многое прояснилось. Просто я не рассматривал его как редактор списка ковнвертируемых файлов, а думал он только для отображения. Тогда многие мои вопросы и замечания снимаются.
в делфе горизонтальный сепаратор  - Caption символ минуса (-).

Вират Лакх

4. Ну тогда не надо никакой сепаратор, если не получится как подсказывает DesignЯR.
Давайте представим, кому может понадобится печатать отсортированное из одного файла? Это же надо определить где какие диапазоны начинаются и заканчиваются, потом эти страницы вписать при распечатке. Кто пойдет таким путем, когда можно тупо запустить файл мергед_Ax, выбрать принтер и нажать ОК. Смело удаляйте, ломать - не делать )
6. Как будет создано окно, так и программа пусть присвоит ему состояние. Вы же оба варианта делали: по умолчанию включенное, теперь по умолчанию выключенное стоит. Может просто последовательность в коде другую надо.
11. Доб. лучше не режимом закидывания, а окном диалога выбора файлов. Так сказать классика чтобы была. Вдруг у кого-то с драгндропом проблемы и мало ли чего еще. Вот сразу же пример наглядный: DesignЯR не понял назначение кнопки. Лучше по-обычному. А удалять тоже будут по-обычному: выделил все и грохнул. Или если кнопочку "x" сделаете.
12) На всякий случай: не забудьте про кэпслок и русскую раскладку для ctrl-А.
17) Меня буквы на кнопках устраивают. Хорошие иконки сделать - как половину программы написать )
На остальное комментарии будут? )

Andreych

Цитата: DesignЯR от 21.10.18, 13:13:35
в делфе горизонтальный сепаратор  - Caption символ минуса (-).


Действительно, а я и забыл. Спасибо.

Andreych

Цитата: Вират Лакх от 21.10.18, 13:17:12
17) Меня буквы на кнопках устраивают. Хорошие иконки сделать - как половину программы написать )
На остальное комментарии будут? )


Многие Ваши замечания вполне логичные, почти все учел. Кроме вертикальных форматов. Они редкие, раз в год можно и один лишний лист напечатать.
Удалил простую сортировку за ненадобностью теперь. Группировку файлов и разделение по форматам сделал независимыми. Создаются файлы merged и merged_A*, только если включены именно соотв. галочки.
Меню и иконки передвинул, но это с неохотой, больше не буду, это не так важно, надо на этом остановиться ;)
Буквы меняю на иконки, может у Вас есть варианты подходящих иконок? Было бы здорово. Формат ".ico" 16x16.
А то появляются муки выбора иконок, а чтобы еще и отражали смысл команд - это сложно.
Хотя я поставлю какие мне попадутся конечно.

Вират Лакх

Цитата: Andreych от 21.10.18, 15:37:19
Кроме вертикальных форматов. Они редкие, раз в год можно и один лишний лист напечатать.

У кого как. Если сложно, то давайте не будем торопиться. Или можете алгоритм меня попросить придумать.
Иконки уже ищем всем форумом )

Andreych

21.10.18, 17:41:35 #45 Последнее редактирование: 21.10.18, 19:59:01 от Andreych
Ну вот, вроде иконки нашел и добавил.
И вертикальные форматы совместил с горизонтальными.

Вират Лакх

Тогда пока не ищем )
Мы же сможем этой программой раскидать на форматы "левую" пдф? Одну закинуть, нажать f и получить мергеды по форматам? А если в ней будут нестандартные листы?
Ещё вопрос. Вот получили мы большой мергед рядом с программой. А потом приспичило добавить ещё парочку компасных документов. Мы первым поставим мергед и потом сдвшки. Программа сделает правильно? Не перепишет мергед раньше времени?
Вопрос третий. Этот модуль, что внутри программы, разделять умеет? А то может вернём -s в новой эпостаси? Типа split. Те пдф, которые будут в списке, разобрать на листы с нумерацией типа _02, где количество разрядов определяется общим числом страниц в разделяемом документе. Это на случай, если в мергеде надо заменить листы или удалить.

Andreych

1. Можно объединить и разделить "левые" PDF на форматы.
Нестандартные листы (которые не А0-А4, A4x3,A4x4,A3x3,A2x3) - будут выглядеть типа merged_0305х0560.pdf.
Кстати, если элементы чертежа, сохраненного в PDF, вылезают за формат листа, то лист уже не будет определяться как А4 или А3, а будет например 0220х0297.pdf.
2. Нет, pdf и Компас не смешиваются. Объединяются они в отдельные файлы. Надо сначала конвертировать Компас в PDF, затем уже объединять старый merged.pdf с новыми. Только старый merged.pdf надо переименовать, иначе новый общий файл не сможет сохраниться.
3. Разделить на отдельные листы можно.


Вират Лакх

22.10.18, 05:05:15 #48 Последнее редактирование: 22.10.18, 08:18:08 от Вират Лакх
1. Компас может и формат А5, следовательно его тоже надо добавить к стандартным. Странноватый ряд кратных форматов. А4 есть на 4, других нет. А1 и А0 нет кратных вообще. Может на всю эту тему универсальный алгоритм устроить, который бы определял любую кратность? Обделать весь ряд А: от 6 до 0. Типа того: вот есть некие размеры листа; если меньшая из сторон соответствует стандарту А (входит в массив 105, 148, 210, 297, 420, 594, 841, 1189), то проверяем вторую (большую) сторону (элс - нестандартный), есть ли она в этом массиве. Если есть, то по этой паре мин и макс определяем А2 или А3 и т.д. Потом, если мин есть, а макс нет в массиве, то макс размер данного листа делим нацело на мин размер этого почти А листа, получаем кратность, если остаток от деления равен нулю (не совсем нулю в некоторых случаях, т.к. по ГОСТ 2.301 дотягивают до стандартного ряда). Если не равен "нулю", то нестандарт.
У компаса есть настройка обрезать по формату. Программа получает обрезанный, если эта опция включена. Но если инвизибл использовать, то не обрезает. Поэтому в saveraster было добавлено настраивать конвертацию. Нам что ли тоже добавить ключ "-о" для обрезки.
Ещё компас криво отрезает, и получается А4 размером 209х296. Вот этот гостовский и компасный плюс-минус надо учесть при определении формата. В госте 2.301 есть таблица 3 предельных отклонений. Можно взять среднее ±2 и будет зашибись. Тогда мы по таблице 2 правильно будем определять и компасные обрезки тоже верно будет.
2. Ну и зря. Это нелогично. Всё, что находится в окне, -m должна объединить в одно. Вы сами видите, сколько надо сделать делов, чтобы добавить документ в мергед пдф. А описанные действия я при желании могу сделать поотдельности.
UPD.
В свете предельных отклонений листов можно написать массив стандартных размеров типа того: 104, 105, 106; 147, 148, 149; и т.д. или если позволяет ЯП: 103,5..106,5; 146,5..149,5; 208..212; ... 1186..1192.
А остаток от деления, получается, не должен превышать те самые 2 мм или при дифференцированном подходе строго по гост: при размере до 150 остаток не более 1,5 мм и т.д. Это для плюсового отклонения. А для минусового надо подумать )
4. При обработке файлов в строке остается запись Запуск компаса, а должно быть типа "Конвертация...", "Пересохранение...".

Andreych

1. Форматы все-таки добавлены не все-все, а в разумных пределах. Я не представляю себе, где может встретиться формат А4х9 или А0х3. Поэтому таких редких нет, они будут числами, ничего страшного. Универсальность делать лень, особенно если таких форматов и не будет в 99,9% случаев.
2. Логика была другая задумана. Но наверное есть свой смысл в том, чтобы все файлы из списка объединялись вместе.

Изменения:
1. Форматов A*x* еще немного добавлено. Правда не много проверил, как они определяются.
2. Сделал еще разделение файлов PDF из списка на отдельные листы (если в файле больше 1 листа). Разбиваются не только PDF, но и чертежи Компаса, если в них несколько листов, то при конвертации они разделятся на отдельные файлы.
3. Убрал таки кнопку добавления в список. Вместо нее кнопка очистки списка.
4. Теперь в списке и файлы PDF и Компас вместе обрабатываются: объединяются и делятся по форматам.


Вират Лакх

24.10.18, 05:36:21 #50 Последнее редактирование: 24.10.18, 05:49:22 от Вират Лакх
Подвожу ни к чему не обязывающие итоги:
-4. Обрезку для инвизибл сделаем? В SDK есть у Convert входной параметр showParam. Может его вызывать, если -i включена? Как оно работает?
-3. Может первой все же сделать кнопочку "?", которая F1?
-2. Очень хотелось бы поверх окон через ключ включать при запуске программы. Если -t никак, то может его по умолчанию включенным?
-1. С сортировкой ничего нельзя поделать при создании файлов по форматам? Они там как попало разбросаны, после распечатки каждого формата неудобно собирать бумагу.

0. Спасибо. Идем дальше. Сегодня компас нормально обрезает по формату :cl:. Тогда эти ±2 не нужны пока.

1. а) Название "Разбить PDF на листы" не совсем точное. Или "Разбить документы на листы", или "Разбить PDF и КОМПАС-Документы на листы". Или "...разделить...". б) Типа того с "Объединять файлы PDF в один". Лучше так: "Объединять [все] документы в один файл PDF".
2. При разделении на листы надо убрать за собой многолистовой исходник пдф, иначе получаются копии. То есть, не глядя, правильно не обработаешь.
3. Иконки что-то уж похожие у разделения на листы и разделения на форматы...
4. Неплохо бы у разделения на листы и объединения листов иметь похожие, но противоположные иконки.
5. При обеих включенных -s и -m получается объединенный файл и только разделенные, а которые были однолистовые, удаляются. А у нас ведь эти кнопочки работают независимо. Значит, на выходе должно быть: все документы по одному листу и плюс один объединенный.
6. Вот у меня запущен обычный компас. Если я инвизиблом сохранил файл, а потом обычным компасом, то при закрытии программы закрывается и ранее запущенный (до программы) компас. Предлагаю закрытие прописать с условием: if IApplication.Visible = Fasle then закрываем компас.

msvteh

касается сортировки списка в v1.8
конвертировал 195 файлов с именем 1.frw, 2.frw, 3.frw.....195.frw в один файл pdf  в порядке 1. 2. 3 и т.д. до 195 , файлы формата А4 вертикальные и горизонтальные + А3 горизонтальные в перемешку, если что то так надо. Как я их не вставлял в мемо, вместе и по отдельности, но несколько последних файлов в списке в мемо перемещались вперед. Это так сортировка по форматам работает? тогда ее как то отключать надо, новой кнопкой

Andreych

msvteh,
Да, заметил косячок при сортировке. Файлы одного формата могли перемешиваться, т.к. порядковые номера файлов в списке сортировались как текст, т.е. 11 меньше 2, 101 меньше 12. Это я поправлю в след. версии.

Вират Лакх,
-4. У меня Invisible не работает, я не могу его работу никак протестировать.
-3. Думаю "?" не стоит добавлять. В меню F1 упомянута, да и кнопка F1 совсем уж очевидна.
-2. Не получается произвольно вкл/выкл режим "поверх всех" до появления окна. Возникает ошибка, прямым текстом сообщается, что нельзя в событиях формы OnShow или OnCreate менять параметры видимости окна. Можно в момент создания формы запустить таймер, чтобы через 1сек переключить режим окна в нужный. Но при этом после появления формы она моргнет, перепокажется, что не очень красиво выглядит. И к тому же есть вероятность, что в момент загруженности компа окно может не успеть появиться за 1сек, тогда вылезет ошибка, что тоже некрасиво.
Поэтому лучше вручную нажать кнопку Поверх всех, если это так уж надо. Делать изначально поверх всех думаю не всем понравится, что программа без особой необходимости нахально выставляет себя вперед всех других.

1. Названия меню с PDF пусть останутся, все таки разделяются и объединяются не документы Компас (на 5 маленьких компасиков или в один большой КОМПАС), а именно файлы PDF.
2. Не согласен. Исходный PDF не надо бездумно убирать, пусть юзер сам удалит, если вдруг надо.
3,4 Конкретные файлы иконок все еще принимаются ;) Я выбрал из того, что у меня было.
5. Этот пункт я пока не осознал что там не так, надо вчитаться несколько раз видимо :)
6. Конечно, закрывать ранее запущенный Компас - это не дело. Я не смог смоделировать такую ситуацию, чтобы программа закрыла открытый до нее Компас. Сейчас в тексте программы Компас закрывается только, если был запущен новый экземпляр функцией CreateOleObject. Если используется уже открытый (функция GetActiveOleObject), то закрытия Компаса не происходит.

Вират Лакх

-4. Инвизибл работает как обычный компас, поэтому showParam можно пощупать на обычном.
-2. Почему же нахально. Быть поверх остальных окон - это часть её основного предназначения. В неё кидают файлы из коммандера или окна винды. При отключенном поверхе схваченные файлы приходится тащить сначала к свернутой программе в панель задач, а потом уже кидать в окошко.
-3, 1. Не буду спорить из-за такой мелочи. Хотя, всё же выскажусь. В некоторых путях использования программы, а может даже во всех, мы имеем входные одним словом Документы или PDF и КОМПАС-Документы и выходные. Ваша формулировка относится к промежуточному результату. Можно остановиться на универсальном "Документы". А название программы, её назначение и способности дают понять, что на выходе только пдф.
2. А тут поспорю. Я говорю про исходный собранный в один пдф, а не которые пользователь кидал для объединения. Если он кнопку не нажимал, что ему на выходе надо собранный в один файл, то и не надо его оставлять. Строго говоря, это неправильная работа программы, т.к. невключенная кнопка всё-таки работает.
3, 4. На досуге поищем иконки.
5. Чтобы лучше понялось, просто попробуйте обработать с -s и -m группу чертежей, среди которых есть однолистовые.
6. Потому что у вас не запускается инвизибл. С запуском инвизибла, видимо, запускается тот новый экземпляр. Короче, просто добавьте простецкую проверку, а я попробую у себя.

Andreych

1. Сделал окно "поверх всех" при запуске.
2. Да, промежуточные файлы иногда оставались, их надо удалять, а я подумал, что речь шла про исходный.
3. Добавил проверку "if IApplication.Visible = Fasle then закрываем компас". У меня ничего не изменилось, но может вам поможет.
4. Да, я увидел, что удаляются однолистовые PDF при разделении на листы. Вроде бы поправил.
5. Ну и сортировку поправил.
Надеюсь косячков стало меньше ;)
Вот наворотили мы конечно логику с множеством вариантов - то разделить (в двух вариантах), то объединить файлы, то одновременно и то и другое и третье. Неудивительно, что при некоторых сочетаниях кнопок программа может не вполне ожидаемо работать.  :)

Вират Лакх

0. Версия 1.9 - это достижение. Благодарю! Спасибо за поверх, удаление ненужных промежуточных и неудаление нужных, отдельное спс за исправленную сортировку! Проверка перед закрытием теперь нормально.
-4. Могу ли я надеяться, что мы попробуем showParam (параметры сохранения pdf)? Это кнопка отдельная получается.
По мелочи осталось:
3 и 4 Иконки позже переделаем.
7. Приставка вида "_p02" фиксированная? А если будет 100 страниц? Или, наоборот, при страницах до 9 можно было бы писать "_p2".
8. Если мы одновременно хотим получить разбитые на страницы и один объединенный (-s -m) или разбитые на форматы (-s -f), то разбитые пдфки содержат расширение исходника типа .cdw. При чистом -s нет расширений.

Andreych

1. Попробовал появить окно настроек сохранения в PDF (showParam этот) - не получается. Вероятно, для этого нужно, чтобы Компас был видимый, чтобы в нем был открыт какой-то документ и т.п.
Однако, свое меню параметров настройки сделать можно. Вот попробуйте, вроде работает.
2. Приставку вида "_p02" можно сделать не на 2 разряда, а гибче, 1, 2, 3 разряда в зависимости от кол-ва листов.
3. Убрал предусмотренное ранее сохранение расширений для опций -f, -m. Давайте попробуем так. Теперь исходное расширение сохраняется только если такой файл PDF (без расширения) уже существует.
4. Удаление промежуточных (ненужных якобы) файлов PDF повлекло за собой удаление и исходных PDF при объединении, т.к. сейчас файлы pdf и Компас обрабатываются (объединяются и разделяются) одинаково. А раньше у меня файлы PDF и файлы Компас обрабатывались отдельно. Надо подумать над этим :)

Вират Лакх

07.11.18, 05:45:12 #57 Последнее редактирование: 07.11.18, 06:20:03 от Вират Лакх
0. В "Свойства - Подробно" не поменяли версию на 1.10
1.0 У SaveRaster окно настроек вызывается. Только перед этим надо выбирать тип документа. Может нам ув. Sabahs подскажет? Тем более вы разговариваете на одном языке программирования.
1.1 Последовательность меню можно было сделать как в компасном окне настроек.
1.2 Вставить шрифты почему-то пропущена. И фильтров нет. Надо попробовать всё же штатное окно.
1.3 С Инвизиблом не проканывает сохранение настроек. Поэтому SaveRaster хранил их в реестре.
1.4 Вроде и с обычным компасом не работает сохранение настроек через новую менюшку?
1.5 Я бы эти настройки все ключами сделал: -bw, -uv, -us, -uo, -of, -os, -vt, -300, -vf ... Если не указано, то настройки компаса.
3. Если мы даем pdf на разбивку или объединение, то сохранение происходит не рядом с программой при включенной настройке. И удаляет исходник. Мы же не удаляем исходное.
4. Если сделать все три -s -m -f или только -m -f, то общий мергед склеивается неправильно: сначала идут А4, потом А3 и т.д. Последовательность выполнения ключей может поменять? Объединение первым, процедурам разделения передавать флаг, что исходники еще нужны будут для следующей команды... Вам виднее, конечно.
5. Сброс полноэкранности компаса после работы в скрытом режиме не решалась?
upd.
Может голову не греть и сделать взаимоисключающие варианты обработки? В параметрах запуска приоритет будет иметь первый ключ.

Sabahs

Цитата: Andreych от 06.11.18, 23:30:36
1. Попробовал появить окно настроек сохранения в PDF (showParam этот) - не получается. Вероятно, для этого нужно, чтобы Компас был видимый, чтобы в нем был открыт какой-то документ и т.п.
Однако, свое меню параметров настройки сделать можно. Вот попробуйте, вроде работает.
...

Если Вы внимательно смотрели, то перед появлением диалога, выскакивает диалог для какого документа делать настройки.
Компас может быть невидимым, а просто создаётся временный документ нужного типа, в визуальном режиме и вызывается диалог, после временный документ закрывается, а конвертер имеет все нужные настройки.
PS. Есть нюанс, диалог модальный и для KompasInvisible мне пришлось делать отдельный поток для вытягивания диалога на верх.

Falcon555

Ваша программа внедряет шрифты Компаса в созданный PDF?