Автор | Сообщение |
|
| |
Пост N: 2758
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.03.13 18:00. Заголовок: PAGESCRIPT 32 FOR (X)HARBOUR
Пытаюсь прикрутить PageScript 32 к проге на Harbour и облом. К проге на Xharbour прикрутил нормально (работает) Есть в TPSCRIPT.PRG (поставляется вместе с библой) #include "PScript.ch" #include "FileIO.ch" #ifdef __XHARBOUR__ // 02.06.2005 - IBTC - changed for xHarbour Builder: #xtranslate Method <Classname>:<x> => Method <x> #define DLL_STDCALL NIL #include "hbclass.ch" #else #include "Xbp.ch" #include "Dll.ch" #endif Harbour естественно не находит Xbp.ch , Dll.ch , не пойму что делать. =============================================== PAGESCRIPT 32 FOR (X)HARBOUR =============================================== This file contains important supplementary and late-breaking information that may not appear in the main product documentation. We recommend that you read this file in its entirety. In order to use PageScript 32 with (x)Harbour, you'll need to distribute PSCRIPT.DLL with your programs. We recommand that PSCRIPT.DLL be copied in the application's folder in order to avoid DLL versions conflicts. Three files needs to be included in your (x)Harbour projects : 1 - DLLCALL.C 2 - TPSCRIPT.PRG 3 - PSCRIPT.CH DLLCALL.C gives PageScript a way to call DLL functions in the same way as Xbase++ does. This interface is contributed by Paul Tucker, Ontario, Canada. Many thanks to him for this great contribution. TPSCRIPT.PRG contains all the PageScript 32 functions and one class, named TPageScript. You may either choose to call PS functions or instantiate TPageScript and use its methods. When you use functions, calling PSInit() automaticaly instanciates a Static TPageScript object. PSCRIPT.CH contains constants used by PageScript 32. Что то не пойму она будет вообще с Hаrbour работать http://www.abeelabs.com/pagescript32/index.php у меня версия 1.3.4.0
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
All
[см. все]
|
|
|
| |
Пост N: 2786
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.03.13 18:52. Заголовок: Все , разобрался. Пр..
Все , разобрался. Прицепил к проге.
|
|
|
|
| |
Пост N: 4603
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.03.15 18:52. Заголовок: Кто то работает Page..
Кто то работает с PageScript под Harbour , или только я один ? Есть вопросик. Функция PSBitmap нормально растягивает картинку по заданным координатам. Но понадобилось печать выводить в PDF формате. В PageScript есть такая возможность через PSSetDevice(3) , все выводится красиво но вот с PSBitmap проблема и изображение не растягивается как следует по горизонтали. То есть грубо говоря если я хочу вписать картинку в прямоугольник шириной 100 мм , то картинка (при PSSetDevice(3)) впишется только в ширину 90 мм. По высоте все чётко. Если выводить на просмотр средствами PageScript или сразу на печать , такой проблемы нет.
|
|
|
|
| moderator
|
Пост N: 1167
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.08.17 10:41. Заголовок: Dima пишет: Кто то ..
Dima пишет: цитата: | Кто то работает с PageScript под Harbour |
| В продолжение темы - PageScript теперь живет по адресу http://pagescript32.com/ и поддержка PDF в его движке существенно переработана и исправлена. Новые владельцы этого продукта обещают уже скоро анонсировать новую версию этой DLL. Кстати, будет обеспечена поддержка 64-битной версии также. Если это будет интересно, то смогу включить их базовый тестовый пример в новую сборку Минигуи. Ваши комментарии приветствуются
|
|
|
|
| |
Пост N: 6528
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.08.17 12:30. Заголовок: gfilatov2002 Интере..
gfilatov2002 Интересно конечно. А кроме HTML хелпа , где то есть страница с загрузкой самого PS32 ? Или снова за бабки ? ))
|
|
|
|
| moderator
|
Пост N: 1168
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.08.17 12:46. Заголовок: Dima пишет: где то ..
Dima пишет: цитата: | где то есть страница с загрузкой самого PS32 |
| Они обещают первую бету раздавать бесплатно, когда она будет готова (адрес выложат на сайте выше). А последующие версии будут платные Я сейчас тестирую такую предварительную версию, и впечатления - приятные, но размер подключаемой DLL увеличился примерно на 1 МБайт за счет полной переработки поддержки PDF формата.
|
|
|
|
| |
Пост N: 6529
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.08.17 14:05. Заголовок: gfilatov2002 Разраб..
gfilatov2002 Разработчики те же ? На каком языке кодят ( ранее был Delphi ) ?
|
|
|
|
| moderator
|
Пост N: 1169
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.08.17 15:11. Заголовок: Dima пишет: Разрабо..
Dima пишет: Нет, права на эту библиотеку выкупила голландская фирма. Dima пишет: цитата: | На каком языке кодят ( ранее был Delphi ) ? |
| Да, это Дельфи. Дополнение о новом компоненте PDF - теперь используется eDocEngine VCL 5 версии (последний билд).
|
|
|
|
| moderator
|
Пост N: 1171
Зарегистрирован: 11.02.10
|
|
Отправлено: 20.08.17 19:40. Заголовок: gfilatov2002 пишет: ..
|
|
|
|
| |
Пост N: 6530
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.08.17 21:32. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Ваши комментарии приветствуются |
| TRIAL и TRAIL это же разные вещи В демке живет именно TRAIL PS TNFSF10 (чаще обозначается как TRAIL) входит в многочисленное семейство факторов некроза опухоли
|
|
|
|
| |
Пост N: 6533
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.08.17 16:25. Заголовок: gfilatov2002 В цело..
gfilatov2002 В целом все нормально. Ранее помнится был еще и TPSCRIPT.PRG , теперь его не будет ?
|
|
|
|
| moderator
|
Пост N: 1172
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.08.17 16:36. Заголовок: Dima пишет: В целом..
Dima пишет: Dima пишет: цитата: | был еще и TPSCRIPT.PRG , теперь его не будет ? |
| Будет, конечно. Ведь в него добавлены переходники для новых функций, которые, кстати, используются в демке
|
|
|
|
|
| |
Пост N: 175
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.08.17 09:45. Заголовок: Крутая вещь ! А можн..
Крутая вещь ! А можно прикрутить к консольному Harbour ?
|
|
|
|
| |
Пост N: 6549
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 09:47. Заголовок: MIKHAIL пишет: А м..
MIKHAIL пишет: цитата: | А можно прикрутить к консольному Harbour ? |
| Конечно. У меня давно работает.
|
|
|
|
| |
Пост N: 176
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.08.17 09:53. Заголовок: Dima можешь мне скин..
Dima можешь мне скинуть рабочую версию и если есть описание ?
|
|
|
|
| |
Пост N: 6550
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 09:58. Заголовок: MIKHAIL https://web..
|
|
|
|
| |
Пост N: 6551
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 12:38. Заголовок: MIKHAIL Стянул ?..
MIKHAIL Стянул ?
|
|
|
|
| |
Пост N: 177
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.08.17 15:00. Заголовок: Dima пишет: Стянул ..
|
|
|
|
| |
Пост N: 6552
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 15:13. Заголовок: MIKHAIL Ссылка норм..
MIKHAIL Ссылка нормальная Вот она без подчерка впереди _https://web.archive.org/web/20150201213531/http://abeelabs.com/downloads/PS32.zip PS Я сливал сегодня по ней , всё норм.
|
|
|
|
| |
Пост N: 178
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.08.17 15:43. Заголовок: Dima пишет: https:/..
Dima пишет: цитата: | https://web.archive.org/web/20150201213531/http://abeelabs.com/downloads/PS32.zip |
| Спасибо скачал. Там есть инструкции как подключать к проекту ?
|
|
|
|
| |
Пост N: 6553
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 15:47. Заголовок: MIKHAIL PAGESCRIPT..
MIKHAIL PAGESCRIPT 32 FOR (X)HARBOUR =============================================== Скрытый текст
This file contains important supplementary and late-breaking information that may not appear in the main product documentation. We recommend that you read this file in its entirety. In order to use PageScript 32 with (x)Harbour, you'll need to distribute PSCRIPT.DLL with your programs. We recommand that PSCRIPT.DLL be copied in the application's folder in order to avoid DLL versions conflicts. Three files needs to be included in your (x)Harbour projects : 1 - DLLCALL.C 2 - TPSCRIPT.PRG 3 - PSCRIPT.CH DLLCALL.C gives PageScript a way to call DLL functions in the same way as Xbase++ does. This interface is contributed by Paul Tucker, Ontario, Canada. Many thanks to him for this great contribution. TPSCRIPT.PRG contains all the PageScript 32 functions and one class, named TPageScript. You may either choose to call PS functions or instantiate TPageScript and use its methods. When you use functions, calling PSInit() automaticaly instanciates a Static TPageScript object. PSCRIPT.CH contains constants used by PageScript 32.
| Правда мне пришлось подправить сырец , вот так Скрытый текст METHOD TPageScript:Init() ::bWaterMark := NIL // Codeblock for Watermark function ::nWaterMark := AWM_NONE // Indicates if the WaterMark is to be printed foreground or background ::lFromDialog := .f. // Indicates if printer selected from printer dialog ::lClipper := .f. // Indicates if calls to TextOut and TextBox should be compatible with PageScript for Clipper ::nUnit := APS_MILL // Default unit is MILLIMETERS ::aPrinters := {} // List of available printers ::nError := PSE_NOERROR // Indicates an error condition, such as no printer available ::aDocInfo := {0, "", "", APS_PORTRAIT, 1, APS_COURIER} // Print job info array ::hDll := DllLoad("PScript.dll") // Handle of the .DLL if ::hDll == nil//0 ::nError := PSE_DLLNOTLOADED // DLL not loaded error else ::nError := DllCall(::hDll, DLL_STDCALL, "PSInit") // No error, set the coordinate system to TOP/LEFT (Default) if ::nError == PSE_NOERROR DllCall(::hDll, DLL_STDCALL, "PSSetCoorSystem", APS_TOPLEFT) endif endif Return Self
| + ихний DLLCALL.C не использую + вверху сырца у меня так Скрытый текст #ifdef __HARBOUR__ // 02.06.2005 - IBTC - changed for xHarbour Builder: #xtranslate Method <Classname>:<x> => Method <x> #include "hbclass.ch" #include "Dll.ch" #else #include "Xbp.ch" #include "Dll.ch" #endif
|
|
|
|
|
| |
Пост N: 6554
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.17 15:54. Заголовок: Кстати в сырцах Harb..
Кстати в сырцах Harbour глянь \core-master\extras\ps32\
|
|
|
|
|
| |
Пост N: 557
Зарегистрирован: 08.07.06
|
|
Отправлено: 30.12.17 22:40. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Ваши комментарии приветствуются |
| Добрый день. Разрешите неск. вопросов: 1) Взял бету с pagescript32.com, погонял тестовый пример - обратил внимание, что после закрытия Print Preview теряется фокус основного окна программы. Приходится возвращаться щелчком мыши или ALT+TAB. Это только у меня? Windows 7 x64. Можно вылечить? 2) Окно Print Preview можно как-то вызывать БЕЗ диалога выбора принтера? Долго искал, как посмотреть результат, не тратя бумагу, сохранял/переоткрывал pdf, пока не понял, что окно выбора принтера выскакивает, но вместо печати за ним идет просмотр... 3) На форуме _https://groups.google.com/forum/#!topic/harbour-users/gnUs9XMBygg некто Richard Visscher утверждает, что PageScript32 будет бесплатным для зарегистрированных пользователей. Что-то изменилось в ценовой политике с августа? Если нет - какие ждать цены, есть информация по предыдущим версиям ? Спасибо.
|
|
|
|
| |
Пост N: 6671
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.12.17 22:43. Заголовок: Тоже интересно..
Тоже интересно
|
|
|
|
| moderator
|
Пост N: 1225
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.12.17 23:08. Заголовок: Sergy пишет: после ..
Sergy пишет: цитата: | после закрытия Print Preview теряется фокус основного окна программы |
| По-видимому, это проблемы взаимодействия с консолью. Для GUI-приложений такой проблемы нет. Sergy пишет: цитата: | вызывать БЕЗ диалога выбора принтера? |
| Нет, вызов этого диалога намертво зашит в pagescript DLL Sergy пишет: цитата: | Richard Visscher утверждает |
| Это новый собственник и разработчик PageScript32 Как он и обещал, он раздает первую публичную бетку DLL версии 3.4.0.105 бесплатно (как рождественский подарок ) Последующие версии, вероятнее всего, будут платными
|
|
|
|
| |
Пост N: 6672
Зарегистрирован: 17.05.05
|
|
Отправлено: 31.12.17 10:13. Заголовок: Sergy пишет: обрати..
Sergy пишет: цитата: | обратил внимание, что после закрытия Print Preview теряется фокус основного окна программы |
| чеканул с последней версией с сайта abeelabs , с фокусом все нормально
|
|
|
|
| |
Пост N: 559
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 17:27. Заголовок: С некоторыми вопроса..
С некоторыми вопросами немного разобрался: + Если использовать gtwvg - с фокусом окна Preview все ок. Гуд + Посмотрел внимательнее - Preview вызывается без диалога принтера. Ничего там не "зашито". ? Сколько все-таки стоил PageScript в "свое время" и как лицензировался: по разработчику или по рабочим местам ? Возник следующий: Как-то уже "привык", что сначала я формирую какой-то отчет, а потом предлагаю юзеру - куда его вывести: на экран/принтер/в файл. Без разницы, что это: простой текст, XLS, PDF, DOC. PageScript заставляет указать устройство вывода заранее - ДО СОЗДАНИЯ самого тела документа. Логически я это понимаю: у разных устройств может быть разное разрешение, разные рабочие шрифты, соотв. документ МОЖЕТ выглядеть по-иному. Кто как решал данный вопрос? Пока что приходит в голову: вместо "прямых" вызовов PSSetFontSize(), PSLine(), PSFrame() и тп... накапливать их некий массив блоков кода, например так: вместо PSSetFontSize(5) => AADD(aQueue, {||PSSetFontSize(5)}) вместо PSLine(x1,y1,x2,y2) => AADD(aQueue, {||PSLine(x1,y1,x2,y2)}) и тп... после чего = запросить юзера, чего он хочет и "циклом по массиву" выполнить все вызовы. Но в этой идее не будут "работать" переменные - нужно заменить их конкретным значением в момент помещения в очередь... Коряво как-то... И непонятно, как тогда обрабатывать необходимые значения некоторых функций - например, ширину текста в пикселях... Что-бы придумать в такой ситуации? Хочется сохранить привычную логику работы программы, вне зависимости от типа документа.
|
|
|
|
| |
Пост N: 6677
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 17:42. Заголовок: Sergy пишет: и как ..
Sergy пишет: цитата: | и как лицензировался по разработчику или по рабочим места |
| Вот что удалось вытащить https://cloud.mail.ru/public/84NB/NTE4TahxH ЗЫ Цена была если мне память не изменяет где то в районе 200 $ (+-50 $)
|
|
|
|
| |
Пост N: 6678
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 19:30. Заголовок: Sergy пишет: PageSc..
Sergy пишет: цитата: | PageScript заставляет указать устройство вывода заранее - ДО СОЗДАНИЯ самого тела документа |
| Это можно обойти (если я верно понял вопрос) , так как устройство задается в PSBeginDoc , первым параметром. Поэтому можно до формирования тела документа , запросить доступные принтера + туда же в менюху сунуть и устройство (предпросмотра). На вскидку так , выкинь лишнее :) Скрытый текст #include "pscript.ch" Func Aprints(nm) local aprinters local bppm:=0 local i hb_default(@nm,"Выберите принтер") if Psinit()==0 aprinters:=APSGetPrinter() for i=1 to len(aprinters) aprinters[ i ]:=" "+aprinters[ i ]+" " next if len(aprinters)>1 bppm:=boxmenu(aprinters,; 10,20,11,21,nm,; Psgetdefprinter(),3,"bg+/b,n/gr*,,,w/b*") elseif len(aprinters)==1 bppm:=1 else soob("Не найдено ни одного принтера.....","r/r","gr+/r") endif else soob("PageScript не загружен...........","r/r","gr+/r") endif return bppm ************ Func APSGetPrinter() local ret:={} local nn:=PSGetPrinterCount() local i for i=1 to nn aadd(ret,PSGetPrinterNames(i)) next return ret
|
|
|
|
|
| |
Пост N: 560
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 21:55. Заголовок: Dima пишет: Это мож..
Dima пишет: цитата: | Это можно обойти (если я верно понял вопрос) , так как устройство задается в PSBeginDoc , первым параметром. |
| Я не очень понятно объяснил, сорри... До знакомства с PageScript у меня было так: Сначала создается сам документ в виде файла (txt, xls, doc, pdf), а затем вызывается диалог с юзером, где предлагается: "куда его выводить: экран/принтер/файл". Стандартно и единообразно. Обработчик вывода на экран, скажем для txt и xls, разумеется, разные. Вот и сижу чешу репу, как быть: вместе с каждым документом, которые планирую готовить через PageScript придется переделывать логику диалога с юзером: сначала "куда выводить", потом формирование тела и собственно, вывод. А если юзер захочет сначала "на экран", а потом "на принтер" - тогда тело документа будет пересоздаваться дважды. А по ходу создания некоторых отчетов открываются/закрываются таблицы, устанавливаются фильтры/relation и куча прочей мути...
|
|
|
|
| |
Пост N: 6681
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 22:20. Заголовок: Sergy пишет: Снача..
Sergy пишет: цитата: | Сначала создается сам документ в виде файла (txt, xls, doc, pdf) |
| У меня иначе , для отчетов (к примеру) , вызывается диалог в котором задаются условия формирования и там же указывается формат отчета (txt, xls, doc, pdf) Надо будет мне доку полистать нового PS32 , может что то есть в этом плане , что тебе нужно.
|
|
|
|
| |
Пост N: 561
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 22:44. Заголовок: Кстати заметил, что ..
Кстати заметил, что при любой ошибке в программе во время подготовки документа, дело завершается не только стандартным RTE, но и полным крэшем с созданием "hb_out.log", а Windows "пытается найти способ решения проблемы и предлагает обратиться к разработчику"... Половинчатое решение содержится в таком коде: * ----------------------- * EXIT PROCEDURE PS32Finish() // PSEndDoc() // RETURN Почему половинчатое? Потому что недокументировано. Фиг с ним, с частично заполненным листом бумаги, вылезающим из принтера после RTE. Странно другое - PSAbort() в данном случае не помогает, программа точно так-же крэшится, как и без EXIT PROCEDURE.
|
|
|
|
|
| |
Пост N: 6683
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 22:50. Заголовок: Сыроват однако новый..
Сыроват однако новый PS32 или мне так кажется ? У меня с прежним таких бяк не было. Код примерно такой if PSInit() == 0 PSSetClipperComp(.t.) PSSetPageSize(DMPAPER_A4) PSBeginDoc(NPrint) PSSetUnit(APS_MILL) ***** какой то код PSEndDoc() else Soob("PageScript не загружен........","r/r","gr+/r") endif
|
|
|
|
| |
Пост N: 562
Зарегистрирован: 08.07.06
|
|
Отправлено: 03.01.18 23:37. Заголовок: Dima пишет: Сыроват..
Dima пишет: цитата: | Сыроват однако новый PS32 или мне так кажется ? |
| Мне особо не с чем сравнить, ты сам то работаешь с новой версией или со старой, провернной ? Попробуй туда, где ... какой-то код поставить что то вроде: ... x := "text string" x++ ... Интересно посмотреть, что будет. Да, забыл уточнить: у меня -mt и gtwvg.
|
|
|
|
| |
Пост N: 6685
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 23:39. Заголовок: Sergy пишет: со ста..
Sergy пишет: с ней старушкой Sergy пишет: цитата: | Да, забыл уточнить: у меня -mt и gtwvg. |
| и у меня Sergy пишет: Счас пробну :)
|
|
|
|
| |
Пост N: 6686
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 23:41. Заголовок: Dima пишет: Счас пр..
Dima пишет: Получил BASE 1086 , неверный аргумент ++
|
|
|
|
| |
Пост N: 6687
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.01.18 23:43. Заголовок: И далее как ты описа..
И далее как ты описал А не бывает такого у меня так как код отлажен.
|
|
|
|
| |
Пост N: 563
Зарегистрирован: 08.07.06
|
|
Отправлено: 04.01.18 16:31. Заголовок: Dima пишет: Получил..
Dima пишет: цитата: | Получил BASE 1086 , неверный аргумент ++ И далее как ты описал |
| Значит дело не в "новизне" версии. цитата: | А не бывает такого у меня так как код отлажен. |
| Круто. У кого нет ошибок в коде - пусть кинет в меня камень ? Развивать дальше ты его не собираешься? Уверен на 200% в отсутствии своих ошибок в дальнейшем? Даже если нет ошибок в твоем коде - их нельзя исключать в окружении: драйвер/память/сеть - неужели не глючат никогда ? А под столом кто-нить пнет ногой системник и из него вывалится на соплях державшийся кабель? Не то, чтобы я жути нагоняю, но RTE - это предсказуемый и контролируемый ядром Harbour процесс корректного (по возможности) завершения всех запущенных процессов, закрытия таблиц, устройств и тд и тп... Крэш, аналогичный вызываемому - это пздц с точки зрения сохранности данных и стабильности работы с системой. Возникает в узле внешнего устройства (принтера в данном случае). К чему приведет - никто не знает. Уверен, что нужно всеми средствами избегать подобной ситуации. Не смог найти форума поддержки PageScript32. Такой есть в природе?
|
|
|
|
| |
Пост N: 6688
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.01.18 17:00. Заголовок: Sergy пишет: Развив..
Sergy пишет: цитата: | Развивать дальше ты его не собираешься? |
| Пока устраивает то что есть. Sergy пишет: цитата: | Уверен на 200% в отсутствии своих ошибок в дальнейшем? |
| Нет не уверен , но если нахожу (находят) то фиксю.
|
|
|
|
| |
Пост N: 6689
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.01.18 17:12. Заголовок: Sergy пишет: Не смо..
Sergy пишет: цитата: | Не смог найти форума поддержки PageScript32 |
| Можно пробнуть сюда написать support@pagescript32.com Sergy пишет: цитата: | Крэш, аналогичный вызываемому - это пздц с точки зрения сохранности данных и стабильности работы с системой |
| Ты в этом уверен ? Мне кажется что после RTE Harbour , сама прога нормально завершается (ну типа с закрытием баз и тд и тп) а далее начинает завершаться сама DLL со своими ошибками , она ж вроде на делфи. Как вариант можно обернуть у себя весь код PS32 начиная с PSINIT в Begin Seguence PS Что то мне кажется что FastReport поведет себя так же в случае RTE в консольной Harbour проге.
|
|
|
|
| постоянный участник
|
Пост N: 5676
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.01.18 18:26. Заголовок: Dima пишет: Что то ..
Dima пишет: цитата: | Что то мне кажется что FastReport поведет себя так же в случае RTE в консольной Harbour проге. |
| Часто при отладке в МиниГуи форма FastReport ведёт себя непредсказуемо (я писал об этом здесь), приходиться снимать задачу через менеджер задач. Базы после этого ни разу не портились. На терминалке, при отладке формы тоже при ошибках вываливалась прога. Поставил простой обработчик ошибок для вывода функций для FastReport BEGIN SEQUENCE WITH { |e|break( e ) } RECOVER USING oError END SEQUENCE и всё... проблемы исчезли... Если форму FastReport отладил - то работает как часы, пока никто не жаловался. Единственно FastReport критичен для принтеров Херокс на ХР, у меня такое было на одном пользователе. Там что то с печатью хитро получилось, со всех программ печатает, а с FastReport нет.
|
|
|
|
| |
Пост N: 564
Зарегистрирован: 08.07.06
|
|
Отправлено: 05.01.18 21:50. Заголовок: Dima пишет: Ты в эт..
Dima пишет: цитата: | Ты в этом уверен ? Мне кажется что после RTE Harbour , сама прога нормально завершается (ну типа с закрытием баз и тд и тп) а далее начинает завершаться сама DLL со своими ошибками , она ж вроде на делфи. |
| Могу быть уверен только в том коде, который сам написал. Или имеющий исходники. А когда есть "черный ящик" в виде DLL - можно предполагать всё, что угодно. Сегодня вот вообще с вероятностью 1к5 стал ловить GPF на ровном месте: Скрытый текст
/*----------------------------------------------------------------------------- Method .....: #GetPrinterCaps() -> aCaps Description : Retreive the printer capabilities of the selected printer -----------------------------------------------------------------------------*/ METHOD TPageScript:GetPrinterCaps() Local cDllTemplate Local nAreaWidth Local nAreaHeight Local nTopMargin Local nLeftMargin Local nPaperWidth Local nPaperHeight // Local nMAreaWidth // Local nMAreaHeight Local nHPixelsInch Local nVPixelsInch Local nBitDepth cDllTemplate := DllPrepareCall(::hDll, DLL_STDCALL, "PSGetPrinterCaps") nAreaWidth := DllExecuteCall(cDllTemplate, HORZRES) // Printable Horz area (Width) Pixels nAreaHeight := DllExecuteCall(cDllTemplate, VERTRES) // Printable Vert area (Height) Pixels nTopMargin := DllExecuteCall(cDllTemplate, PHYSICALOFFSETY) // Top margin Pixels nLeftMargin := DllExecuteCall(cDllTemplate, PHYSICALOFFSETX) // Left margin Pixels nPaperWidth := DllExecuteCall(cDllTemplate, PHYSICALWIDTH) // Total paper width Pixels nPaperHeight := DllExecuteCall(cDllTemplate, PHYSICALHEIGHT) // Total paper height Pixels // nMAreaWidth := DllExecuteCall(cDllTemplate, HORZSIZE) // Printable Horz area mm // nMAreaHeight := DllExecuteCall(cDllTemplate, VERTSIZE) // Printable Vert area mm nHPixelsInch := DllExecuteCall(cDllTemplate, LOGPIXELSX) // Number of Horz pixels/Inch Pixels nVPixelsInch := DllExecuteCall(cDllTemplate, LOGPIXELSY) // Number of Vert pixels/Inch Pixels nBitDepth := DllExecuteCall(cDllTemplate, NUMCOLORS) // Bit depth (number of bits per pixel) Return {nPaperWidth , ; nPaperHeight, ; nAreaWidth , ; nAreaHeight , ; nTopMargin , ; nLeftMargin , ; nHPixelsInch, ; nVPixelsInch, ; nBitDepth} // <<-- ошибка вот тут
| Затем неожиданно перестали создаваться PDF файлы: Скрытый текст
Application Internal Error - D:\Z_Test\PS32\demo.exe Terminated at: 2018-01-05 21:42:58 Неисправимая ошибка 6005: Exception error: Exception Code:C0000005 ACCESS_VIOLATION Exception Address:009F61F1 EAX:00000000 EBX:00FF4EB0 ECX:00000000 EDX:00000001 ESI:01019D90 EDI:00000000 EBP:0043EF14 CS:EIP:0023:009F61F1 SS:ESP:002B:0043EED8 DS:002B ES:002B FS:0053 GS:002B Flags:00210202 Exception Parameters: 00000000 00000004 CS:EIP: 8B 48 04 8B 40 08 48 85 C0 7C 0E 40 33 F6 3B 11 SS:ESP: 01019D90 00BF54AD 0043EF20 00BF55F8 0043EF14 00000000 00000025 0043F1E4 00000000 00000000 00000001 FFFFFFFF 00000000 01006520 064F3EB4 0043F208 C stack: EIP: EBP: Frame: OldEBP, RetAddr, Params... 009F61F1 0043EF14 0043F208 00C6AC96 00000000 0043F260 00C6BF13 0043F208 0043F2A0 00000001 00000001 00000000 00C6AC96 0043F208 0043F254 00C69233 00000000 00000000 00000000 01012C78 010449A0 01006520 00000001 00000001 00C69233 0043F254 0043F2A4 00C694C6 0043F2A4 0043F2BC 00C69509 0043F2A4 00000001 00000000 00000001 010062CC 00C694C6 0043F2A4 0043F3F0 00BF143D 01012CB8 0043F3A8 0043F358 00000003 0043F408 00BF15D2 0043F3F0 00000110 00BF143D 0043F3F0 0043F464 00C5A8CE 01020320 00C692C8 00FC1A50 010224E0 0043F414 00C5A8F9 0043F464 0043F48C Modules: ... Called from DLLCALL(0) Called from TPAGESCRIPT:ENDDOC(470) Called from PSENDDOC(2475) Called from (b)PS32(38) Called from PS32:FINISH(0) Called from MAIN(148)
| Хотя еще вчера все работало норм. PSGetPrinterCaps() заменил вот на такой огород: // было: aCaps := PSGetPrinterCaps() // параметры принтера // стало: aCaps := { PSGetPrinterCapsEx(110),; PSGetPrinterCapsEx(111),; PSGetPrinterCapsEx( 8),; PSGetPrinterCapsEx( 10),; PSGetPrinterCapsEx(113),; PSGetPrinterCapsEx(112),; PSGetPrinterCapsEx( 88),; PSGetPrinterCapsEx( 90),; PSGetPrinterCapsEx( 24) ; } А вот что случилось с PDF - вообще не могу понять... Единственное, что из серьезного изменилось - утром винда захотела обновиться и попросила установить 100500 мегабайт ежемесячных обновлений. Я не возражал - слышал, там закрывают какой-то серьезный косяк с защитой на уровне ядра процессоров Intel, выпущенных а последние 10 лет...
|
|
|
|
|
| |
Пост N: 6691
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.01.18 22:43. Заголовок: Sergy пишет: Я не ..
Sergy пишет: цитата: | Я не возражал - слышал, там закрывают какой-то серьезный косяк с защитой на уровне ядра процессоров Intel, выпущенных а последние 10 лет... |
| я тоже читал на яплакал...
|
|
|
|
| |
Пост N: 6692
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.01.18 17:10. Заголовок: Sergy А ты юзаешь ф..
Sergy А ты юзаешь файл из поставки DLLCALL.C ? Я нет.
|
|
|
|
| |
Пост N: 565
Зарегистрирован: 08.07.06
|
|
Отправлено: 07.01.18 00:17. Заголовок: Честно говоря, даже ..
Честно говоря, даже не понял, как это "всё" заработало у меня. Скачал файл из pagescript32.com, потыкал по hbp, prg по очереди... что-то скомпилировалось как библиотека и "куда-то" упали *.a и *.о файлы... Скомпилировался ли dllcall.c - я не в курсе. Нигде ж ничего про это не написано... Пока адаптировал свою библиотеку печати под вызовы pscript.dll, на след неделе в боевом режиме с админом потестируем, что это за зверь... Если что - отключить его и вернуться на hpdf - дело трех секунд: если программа не "видит" dll - будет использовать harupdf.
|
|
|
|
| |
Пост N: 6693
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.01.18 10:37. Заголовок: Sergy пишет: Нигде ..
Sergy пишет: цитата: | Нигде ж ничего про это не написано.. |
| Скрытый текст In order to use PageScript 32 with (x)Harbour, you'll need to distribute PSCRIPT.DLL with your programs. We recommand that PSCRIPT.DLL be copied in the application's folder in order to avoid DLL versions conflicts. Three files needs to be included in your (x)Harbour projects : 1 - DLLCALL.C 2 - TPSCRIPT.PRG 3 - PSCRIPT.CH DLLCALL.C gives PageScript a way to call DLL functions in the same way as Xbase++ does. This interface is contributed by Paul Tucker, Ontario, Canada. Many thanks to him for this great contribution. TPSCRIPT.PRG contains all the PageScript 32 functions and one class, named TPageScript. You may either choose to call PS functions or instantiate TPageScript and use its methods. When you use functions, calling PSInit() automaticaly instanciates a Static TPageScript object. PSCRIPT.CH contains constants used by PageScript 32.
|
|
|
|
|
| |
Пост N: 566
Зарегистрирован: 08.07.06
|
|
Отправлено: 07.01.18 12:08. Заголовок: Это конечно хорошо, ..
Это конечно хорошо, но как его компилировать-то ? Куда девать или где искать соотв. dllcall.а, dllcall.o ??? У себя я их не нашел... Ни в одном из *.hbp/hbc в текущей поставке о нем нет упоминаний... Ты уверен, что этот файл нужен для актуальной версии Harbour ? Хочу избавиться от наличия ps32.hbc, содержащего такие строки: description=PageScript32 wrapper incpaths=. libpaths=lib/${hb_plat}/${hb_comp} libs=${hb_name} libs=hbxpp.hbc вытащил всё из .\lib\hbwin\.hbmk\win\mingw\*.* в .\lib\*.* , заменил его на такой: libpaths=lib libs=ps32 в myprog.hbp добавил hbxpp.hbc и ps32.hbc Вроде работает, но держать отдельный файл ради двух строк, в нем содержащихся... напрягает... в myprog.hbp добавил ещё пару строк: -Llib // путь к библиотеке(ам) -lps32 // определение библиотеки вроде они делают всё тоже самое, что ps32.hbc, но hbmk2 "не может найти библиотеку ps32"...
|
|
|
|
| |
Пост N: 6695
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.01.18 17:24. Заголовок: Sergy пишет: -lps32..
Sergy пишет: цитата: | -lps32 // определение библиотеки |
| Не знаю как в новой версии , но в старой достаточно было прилинковать TPSCRIPT.PRG , в старой версии либа не создавалась.
|
|
|
|
| |
Пост N: 567
Зарегистрирован: 08.07.06
|
|
Отправлено: 09.01.18 02:05. Заголовок: Спасибо за наводку, ..
Спасибо за наводку, попробовал прямую линковку tpscript.prg - получилось. Поковыряю ещё немного, добью, я думаю... Хочу типа "addon" оформить, чтобы чужого кода у меня в папке с сырцами приложения вообще не было. И чтобы в случае выхода новой версии pscript не вычищать из дебрей ничего, а просто накатить в hb\addon\ps32 свежие файлы и вуаля. Как, например, это сделано в LetoDB(f).
|
|
|
|
| Администратор
|
Пост N: 3659
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.01.18 09:40. Заголовок: Нескромный вопрос: а..
Нескромный вопрос: а зачем сейчас использовать PageScript ? Я понимаю, лет 15 назад еще в клиппере это был способ windows печати. А сейчас в hbwin есть соответствующие средства печати, да и любая gui-библиотека имеет такие возможности. Зачем сейчас печатать через стороннее приложение ?
|
|
|
|
| |
Пост N: 6696
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.01.18 13:53. Заголовок: Pasha пишет: Нескро..
Pasha пишет: цитата: | Нескромный вопрос: а зачем сейчас использовать PageScript ? |
| 1. Привычка :) 2. Меньше кода 3. Вывод в PDF , EMF 4. Предпросмотр печати (под WVT самое то) 5. На вскидку есть ряд функций которых нет в Hbwin и нужно писать и тестить свое под Hbwin 6. Достаточно много форм и отчетов реализовано (у меня) под PS32 , переделывать под Hbwin не хочется так как и так нормально работает. 7. Не плохо документировано.
|
|
|
|
| |
Пост N: 568
Зарегистрирован: 08.07.06
|
|
Отправлено: 09.01.18 16:41. Заголовок: Pasha пишет: Нескро..
Pasha пишет: цитата: | Нескромный вопрос: а зачем сейчас использовать PageScript ? |
| Практически до 2016 года для печати бухгалтерских документов хватало имеющихся внутренних средств печати наподобие txt2gdi, txt2win и им подобных, которые одним шрифтом/размером фигачат целиком документ, разворачивая по необходимости страницу из портрета в ландшафт. Для разнообразных отчетов - все красивости Excel. Для ценников (повторяющаяся информация по заранее заданным шаблонам) - давно написана безотказно работающая утилита. Когда настал вопрос с печатью доверенностей (где половина текста идет под 90 градусов), стало понятно, что в этом разнообразии пора что-то менять. Сделал свой класс с набором примитивов: начать документ, задать толщину, нарисовать прямоугольник, выбрать шрифт, размер вывести в такую-то координату xy, завершить документ и тп. Из-за того, что PageScript был заброшен создателями, начал вывод через HPDF, всё заработало супер-гуд, кроме собственно печати документов. Sumatra-PDF прекрасно выводит его на экран, но печатает с дикими тормозами - пересылая на принтер как bitmap-картинку. Adobe Reader - имеет задокументированную опцию командной строки /t - распечатать и завершить работу. Печатает без проблем, но несколько лет назад разработчики решили, что этого мало и программа должна предложить юзеру что-нибудь ещё: аннотировать документ, послать его... в облако. Наваял процедуру, которая запускает процесс, ждет некоторое время, одновременно пытаясь удалить pdf файл - и... грохает порожденный процесс. Работает быстро, но... как-то коряво... После того, как в декабре проект PageScript "ожил" - за пару дней подключил его к своему классу. С точки зрения программы - вообще ничего не поменялось. Те-же самые примитивы, те-же самые координаты, те-же самые документы выводятся, только теперь иным способом. Все работает быстро и удобно, только бесплатный "черный ящик" в виде dll напрягает. Если будет поддерживаться и не будет глючить - оставлю его. Если нет - можно поковыряться и с печатью через wingdi, но там отдельно нужно будет думать, как делать preview на экране. Было-бы идеальное решение - все-бы давно сидели на нем...
|
|
|
|
| |
Пост N: 6697
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.01.18 16:54. Заголовок: Sergy пишет: Было-б..
Sergy пишет: цитата: | Было-бы идеальное решение - все-бы давно сидели на нем... |
| +1 Sergy пишет: чем pdfFactory Pro не устраивает ?
|
|
|
|
| |
Пост N: 569
Зарегистрирован: 08.07.06
|
|
Отправлено: 09.01.18 17:29. Заголовок: Dima пишет: чем pdf..
Dima пишет: цитата: | чем pdfFactory Pro не устраивает ? |
| Пока искал варианты печати, много что перепробовал, все без особого успеха: STDU Viewer, 3nity PDF viewer, Nitro PDF, PDFLite, PDF X-change и много много других... Возможно и PDFfactory был в том списке. Посмотрел на него только что - 100$ за рабочее место только чтобы печатать?
|
|
|
|
| |
Пост N: 6698
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.01.18 17:59. Заголовок: Sergy пишет: Посмот..
Sergy пишет: цитата: | Посмотрел на него только что - 100$ за рабочее место только чтобы печатать? |
| Ты же про Excel выше упомянул , я было подумал что он пиратский , тогда почему не юзать и эту прогу в "честном" пиратском варианте.... PS _http://fineprint.com/compare-products/
|
|
|
|
| |
Пост N: 570
Зарегистрирован: 08.07.06
|
|
Отправлено: 10.01.18 23:34. Заголовок: Dima пишет: Ты же п..
Dima пишет: цитата: | Ты же про Excel выше упомянул , я было подумал что он пиратский , тогда почему не юзать и эту прогу в "честном" пиратском варианте.... |
| Экселю особо альтернатив нет. А тут - море разливенное.
|
|
|
|
| |
Пост N: 572
Зарегистрирован: 08.07.06
|
|
Отправлено: 21.01.18 17:39. Заголовок: Дабы не плодить кучу..
Дабы не плодить кучу тем, продолжу тут. PageScript обязывает указать одно/или двустороннюю печать в самом начале документа: PSBeginDoc(nPrinter, cTitle, nOrientation, nCopies, nPageSize, nDuplex, nPaperBin) -> nError Сначала никакой параметр туда не передавал, соотв. по умолчанию была односторонняя печать: DMDUP_SIMPLEX. При печати документа с более чем одной странице - из принтера с двусторонней печатью выходили несколько листов, распечатанных с одной стороны. При настройке SetDevice(DEV_PREVIEW) опция "выбрать двустороннюю печать" становилась серой, соотв. там включить ее вручную - тоже нельзя. Думаю, делов-то - включил всем принудительно DMDUP_VERTICAL или DMDUP_HORIZONTAL (в зависимости от Portrait/Landscape документа) и думать забыл про это. Через пару недель эксплуатации возникли вопросы иного рода: 1) каждая "односторонняя" бумажка сначала вылезает из принтера, потом снова в него засасывается и печатается с другой стороны. А это доооолго. 2) при печати мелких документов (например, складская накладная на выдачу 1-2 артикулов) обычно использовались "половинки" листов А4, скармливаемых через переднюю щель принтера. Теперь это нельзя делать, тк при двусторонней печати некоторые принтеры спотыкаются (из-за того, что лист короткий), а некоторые вообще отказываются брать любую бумагу через переднюю щель. В PSSetDevice(DEV_PREVIEW) опция "двусторонняя или односторонняя печать" по-прежнему серая. PSSetDuplex() тоже не поможет: to set the desired Duplex mode for printers that support Duplex printing. Call this procedure before starting a new document. Как-бы грамотно подступить к этому вопросу? Ведь до создания документа еще не ясно, сколько страниц на нем будет. "Заставить юзера при печати каждого документа указать, что ему нужно" - вариант какой-то... корявый...
|
|
|
|
| |
Пост N: 6705
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.01.18 18:36. Заголовок: Sergy пишет: Ведь д..
Sergy пишет: цитата: | Ведь до создания документа еще не ясно, сколько страниц на нем будет. |
| При желании ты бы мог и просчитать сколько их будет .
|
|
|
|
| |
Пост N: 573
Зарегистрирован: 08.07.06
|
|
Отправлено: 22.01.18 17:31. Заголовок: Dima пишет: При жел..
Dima пишет: цитата: | При желании ты бы мог и просчитать сколько их будет . |
| Да. Но желания дважды выполнять одну и ту-же работу нет. Думал, может есть вариант какой в PageScript использовать "настройки принтера", а не жестко задавать, причем заранее.
|
|
|
|
| |
Пост N: 621
Зарегистрирован: 08.07.06
|
|
Отправлено: 26.05.18 20:45. Заголовок: Может кому актуально..
Может кому актуально - на http://pagescript32.com/ обновилась версия - теперь это 3.0.4.119 Из добавленного официально: New: PSSetPWTopMost New: PSUnicodeChar - Prints a Unicode character at position X,Y using parameters New: PDF/A output Кроме того, обнаружил в pscript,ch новые константы: #define DEV_RTFFILE 6 // Print to RTF file #define DEV_JPGFILE 7 // Print to JPG file
|
|
|
|
| |
Пост N: 6929
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.09.18 21:12. Заголовок: Sergy Я так понял т..
Sergy Я так понял ты плотно подсел на новый Pagescript. Пока сижу на старом от abbylabs. Скажи плиз , новый PS32 стабилен и работает без глюков ? Я о версии 3.0.4.119
|
|
|
|
| |
Пост N: 645
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.09.18 15:57. Заголовок: Да, работаю на верси..
Да, работаю на версии 4.119 Работает стабильно, но по необъяснимым причинам иногда на одном-двух рабочих местах возникает GPF с кодом ошибки 6005 - DLL модуль вываливается при вызове BeginDoc(). Как понимаю, какая-то беда с драйвером принтера на конкретной машине. Была, к примеру, такая фигня на вроде-бы "спокойной" машине после замены на ней принтера (вместе с драйверами, разумеется). Переписывался с автором - он не может ничем помочь, тк хочет самодостаточный пример... Пока заставил админа пройти по всем проблемным машинам и обновить драйвера. С прежних 1-2 ошибок в неделю число GPF уменьшилось до 1-2 в месяц. Не по фэн-шую, конечно, но пока других вариантов нет.
|
|
|
|
| |
Пост N: 6930
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.09.18 17:05. Заголовок: Sergy пишет: Работа..
Sergy пишет: цитата: | Работает стабильно, но по необъяснимым причинам иногда на одном-двух рабочих местах возникает GPF |
| У меня тоже бывает , одна из причин не хватка свободного места на системном диске + принтер HP , после чистки ошибка сразу уходит.
|
|
|
|
| |
Пост N: 646
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.09.18 19:52. Заголовок: Dima пишет: У меня ..
Dima пишет: цитата: | У меня тоже бывает , одна из причин не хватка свободного места на системном диске + принтер HP , после чистки ошибка сразу уходит. |
| Нужно будет у меня посмотреть, что с этим параметром... Еще заметил, что фигня происходит на RDP, когда юзеры подключаются со "своими" принтерами. Сказал админу, чтобы всем RDP-юзерам настроил по умолчанию MS XPS Writer. Кол-во GPF значительно уменьшилось.
|
|
|
|
| |
Пост N: 6931
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.09.18 15:04. Заголовок: Sergy А как ты регу..
Sergy А как ты регулируешь поля при печати ? В основном у меня печать на всех принтерах идет нормально а вот на Hp1020 , съедает то левую сторону документа то правую
|
|
|
|
| |
Пост N: 647
Зарегистрирован: 08.07.06
|
|
Отправлено: 25.09.18 16:27. Заголовок: Dima пишет: А как т..
Dima пишет: цитата: | А как ты регулируешь поля при печати ? |
| Пока работал с HPDF - проблем не было вообще: задал размер документа 297*210 и не паришься ни о чем. 95% PDF-viewer'ов по умолчанию масштабируют итоговое изображение на конкретный принтер. А вот вместе с PageScript32 я "пооооонял", что физический размер бумаги и область печати - это вообще совершенно разные значения. Сначала, как вариант, думал прочитать размер области печати из свойств принтера и внутри "своего" класса включить автомасштаб... Потом решил, что проще сразу ограничить ширину документа по узкой стороне на 199мм. Этого хватило на весь наш зоопарк. Заодно вопрос с оставшимися 5% PDF-viewer'ов закрылся сам собой.
|
|
|
|
| |
Пост N: 6938
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.10.18 17:11. Заголовок: Sergy Вопрос такой ..
Sergy Вопрос такой по PS32... Номер принтера я сразу указываю в PSBeginDoc() У себя проверял дома (все принтера локальные) , при смене принтера в программе печать идет именно на него. А вот на оффисе не понятки , там есть сетевые принтера и после выбора одного из них , печать почему то уходит на Microsoft XPS Document Writer (как правило) . В новом PS32 есть такая проблема ?
|
|
|
|
| |
Пост N: 6939
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.10.18 11:00. Заголовок: PS Тесты показали чт..
PS Тесты показали что глючит исключительно на Windows XP
|
|
|
|
| |
Пост N: 650
Зарегистрирован: 08.07.06
|
|
Отправлено: 06.10.18 16:00. Заголовок: Dima, с того момента..
Dima, с того момента, как я узнал про win_PrinterList() - я перестал обращаться к принтерам по номерам. Совсем. Ибо давным-давно наступил на те самые грабли, о которых ты пишешь. Про PageScript я тогда даже и не слышал. Задаю принтер только по его имени. В одном из офисов, например, их целый зоопарк: один настольный (расшаренный), два сетевых. 5 компов. Проблем с переключением вообще никаких. Все печатают откуда угодно на какой угодно принтер.
|
|
|
|
| |
Пост N: 6940
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.10.18 16:52. Заголовок: Sergy Интересно а к..
Sergy Интересно а как ты задаешь его по имени в PS32 , если везде где он задается используется именно номер принтера.
|
|
|
|
| |
Пост N: 651
Зарегистрирован: 08.07.06
|
|
Отправлено: 06.10.18 19:41. Заголовок: В настройках каждой ..
В настройках каждой рабочей копии программы сохраняю именно имя принтера, а не цифру. 1) При запуске печати по заданному имени проверяю - присутствует ли он в win_PrinterList() и является ли принтером по умолчанию - win_PrinterGetDefault(). 2) Если нет - переставляю перед началом печати документа через win_PrinterSetDefault(). 3) В PSBeginDoc() первым параметром всегда передаю NIL (печатать на дефолтный). 4) После печати - возвращаю дефолтный принтер "назад" (если было его изменение). bullet-proof
|
|
|
|
| |
Пост N: 6941
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.10.18 21:12. Заголовок: Sergy Хитро ты выкр..
Sergy Хитро ты выкрутился
|
|
|
|
| |
Пост N: 6945
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.10.18 21:22. Заголовок: Sergy А в проге у т..
Sergy А в проге у тебя какая кодировка , 866 ? Ведь все эти функции WIN_Printer* результат возвращают в кодировке 1251 , и если не сделать перекодировку то принтера имеющие в названиях кирилицу , вместо кирилицы покажут вопросики. С win_PrinterList() и win_PrinterGetDefault() я так и поступил. Примерно так Func My_WIN_PRINTERLIST() local alist:={} local i hb_cdpSelect( "RU1251" ) alist:=WIN_PRINTERLIST() if len(alist)#0 for i=1 to len(alist) alist[ i ]:=hb_ansitooem(alist[ i ]) next endif hb_cdpSelect( "RU866" ) return alist Вопрос такой , в win_PrinterSetDefault() тоже имя передавать в RU1251 c временной сменой кодировки ? Я конечно поиграюсь и выясню , просто если готовый ответ я сэкономлю некоторое время а его не так много при средней продолжительности жизни Проехали по вопросу , поиграл , выяснил.
|
|
|
|
| |
Пост N: 6946
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.10.18 21:17. Заголовок: Sergy Кстати твой ф..
Sergy Кстати твой фокус не сработал под Win7 + PS32 от AbbeLabs , упорно печатает на принтер по умолчанию который был при запуске программы , под XP возможно и сработает , проверить не где. Sergy пишет: цитата: | 3) В PSBeginDoc() первым параметром всегда передаю NIL (печатать на дефолтный). |
| Так и делал в тестах. Еще и проверил меняется ли принтер по умолчанию (если его менять с win_PrinterSetDefault) - да меняется , но печатает на тот что я описал выше.
|
|
|
|
| |
Пост N: 652
Зарегистрирован: 08.07.06
|
|
Отправлено: 15.10.18 20:45. Заголовок: Dima Кодировка прог..
Dima Кодировка программы 866, во всех вызовах к API винды/офиса/принтеров использую hb_Translate(cString,"RU866","RU1251"). Получается, что "старый" PageScript32 где-то у себя "запоминает" при инициализации дефолтный принтер и печатает на него.
|
|
|
|
| |
Пост N: 7187
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.05.20 09:53. Заголовок: Что то глючит PSINIT..
Что то глючит PSINIT на Вин10 Called from DLLCALL(0) Called from TPAGESCRIPT:INIT(266) in TPSCRIPT.PRG При чем первый раз может упасть а потом все работает ровно. Куда копать ? PS На винде ниже 10 все работает ровно METHOD TPageScript:Init() ::bWaterMark := NIL // Codeblock for Watermark function ::nWaterMark := AWM_NONE // Indicates if the WaterMark is to be printed foreground or background ::lFromDialog := .f. // Indicates if printer selected from printer dialog ::lClipper := .f. // Indicates if calls to TextOut and TextBox should be compatible with PageScript for Clipper ::nUnit := APS_MILL // Default unit is MILLIMETERS ::aPrinters := {} // List of available printers ::nError := PSE_NOERROR // Indicates an error condition, such as no printer available ::aDocInfo := {0, "", "", APS_PORTRAIT, 1, APS_COURIER} // Print job info array ::hDll := DllLoad("PScript.dll") // Handle of the .DLL if ::hDll == nil//0 ::nError := PSE_DLLNOTLOADED // DLL not loaded error else ::nError := DllCall(::hDll, DLL_STDCALL, "PSInit") вот тут падает // No error, set the coordinate system to TOP/LEFT (Default) if ::nError == PSE_NOERROR DllCall(::hDll, DLL_STDCALL, "PSSetCoorSystem", APS_TOPLEFT) endif endif Return Self В логах ошибок вот такая срань Скрытый текст Неисправимая ошибка 6005: Exception error: Exception Code:0EEDFADE Exception Address:74F7AB32 EAX:009FF010 EBX:00D03E40 ECX:00000007 EDX:00000000 ESI:00000000 EDI:00D03C20 EBP:009FF06C CS:EIP:0023:74F7AB32 SS:ESP:002B:009FF010 DS:002B ES:002B FS:0053 GS:002B Flags:00000212 Exception Parameters: 00CC04F2 00D03E74 00D03E40 00000000 00D03C20 009FF134 009FF0A0 CS:EIP: 8B 4C 24 54 33 CC E8 A3 49 00 00 8B E5 5D C2 10 SS:ESP: 0EEDFADE 00000001 00000000 74F7AB32 00000007 00CC04F2 00D03E74 00D03E40 00000000 00D03C20 009FF134 009FF0A0 00D03E70 00CC1704 00000000 00000000
|
|
|
|
|
| |
Пост N: 264
Зарегистрирован: 05.10.06
|
|
Отправлено: 01.05.20 16:22. Заголовок: Dima пишет: ::nErro..
Dima пишет: цитата: | ::nError := DllCall(::hDll, DLL_STDCALL, "PSInit") вот тут падает |
| Я с PS не работал, но имел похожую ошибку при работе с DllCall, когда в функцию передаются еще какие либо параметры и их размер менее требуемого в вызываемой функции. Глянь доку, может функция принимает какие либо параметры... передай пустые значения для строковых space(50) например
|
|
|
|
| |
Пост N: 663
Зарегистрирован: 08.07.06
|
|
Отправлено: 02.05.20 00:09. Заголовок: PageScript32 падает ..
PageScript32 падает у меня с вероятностью 1:100 - под Win7 и Win10. Причем не RTE, а качественный крэш с hb_out.log. Либо в PSIniit, либо рядом - PSSetOrientation. Если на одной машине два раза за одну неделю такая петрушка - прошу админа переустановить дрова принтера. Помогает. Писал разработчику - он говорит, что такого ни у кого не бывает. А если и будет, по дампу памяти и hb_out.log он помочь не в состоянии - нужна воспроизводимость ошибки. :(
|
|
|
|
| |
Пост N: 7188
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.05.20 10:42. Заголовок: Sergy пишет: Причем..
Sergy пишет: цитата: | Причем не RTE, а качественный крэш с hb_out.log. |
| Аналогично а само окно программы просто тихо схлопывается
|
|
|
|
| |
Пост N: 7528
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.01.22 20:27. Заголовок: 31-12-2021 - Next u..
31-12-2021 - Next update will get the following new functions: - PDF signing for new and existing PDF files - PDF printing from code and new preview window - New preview window which can be used seperate or used non-modal from PS Check this page next month for the beta version, happy new year !
|
|
|
|
| |
Пост N: 632
Зарегистрирован: 17.06.10
|
|
Отправлено: 04.01.22 22:43. Заголовок: Не понял, а почему э..
|
|
|
|
| moderator
|
Пост N: 2127
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.04.23 18:41. Заголовок: Новое обновление
Dima пишет: цитата: | Check this page next month for the beta version |
| 14.04.2023 - Version 4 update : - PDF signing for new and existing PDF files - PDF printing from code and new preview window - New preview window which can be used seperate or used non-modal from PS - Includes version 3(3.0.4.178) and version 4 ( 4.0.1.157) 32 and 64 bit DLL
|
|
|
|
| moderator
|
Пост N: 2130
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.05.23 11:09. Заголовок: На сайте https://www..
На сайте https://www.pagescript32.com снова обновление: PsViewer 1.2 - 04.05.2023 цитата: | Pagescript standalone PDF Viewer 1.2 ------------------------------------- Parameters : 1 -> PDF filename ( use full path if not in same directory as exe ) 2 -> (true -> Disable save/saveas/close in menu 3 -> left position viewer 4 -> top position viewer 5 -> formstyle top = alwaysonTop default = normal * Fixed - starting position of viewer will be saved and used on next usage - if parameters 4 and 5 are used this will be the default |
|
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
All
[см. все]
|
|