Автор | Сообщение |
|
| |
Пост 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: 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. Заголовок: Не понял, а почему э..
|
|
|
Новых ответов нет
, стр:
1
2
3
4
5
All
[см. все]
|
|