Автор | Сообщение |
|
| |
Пост N: 3230
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.13 11:18. Заголовок: Снова WIN_PRN (Hbwin)
Устал бороться с этой проблемой , не работает кол-во копий, всегда печатается 1 копия. Просьба проверить как у кого отработает под Harbour. У меня Harbour 3.2.0dev (Rev. 18920) Пример PROC Main() LOCAL oPrinter, i LOCAL cPrinter:=win_printerGetDefault() oPrinter := Win_Prn():New( cPrinter ) oPrinter:Copies := 2 oPrinter:Create() oPrinter:startDoc("testprn") FOR i := 1 TO 40 oPrinter:TextOut(str(i)) oPrinter:NewLine() NEXT oPrinter:endDoc() oPrinter:Destroy() return PS Пробовал под Mingw и Bcc
|
|
|
Ответов - 21
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 114
Зарегистрирован: 19.05.05
|
|
Отправлено: 18.06.13 12:45. Заголовок: Harbour 3.0.0 (rev 1..
Harbour 3.0.0 (rev 16951) BCC Отпечатал 2 копии на лазерном и на струйнике
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 18.06.13 13:23. Заголовок: Harbour 3.2.09dev (r..
Harbour 3.2.09dev (r1306061203) Mingw 2 копии на лазерном -- все Ok!
|
|
|
|
| |
Пост N: 3231
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.13 13:39. Заголовок: nick_mi ZAlex Спасиб..
nick_mi ZAlex Спасибо ! А я юзал виртуальные принтера и на любом из них всегда получал 1 копию и вот пробнул на железном , действительно все нормально. Вероятно какой то косяк с виртуальными принтерами из Harbour
|
|
|
|
| |
Пост N: 3232
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.13 14:01. Заголовок: А на виртуальном при..
А на виртуальном принтере кто то может попробовать ? Я юзал VentaFax , PdfFactory 3.x , PdfFactory 4.x , Snagit 10 и виртуалки от MS Office
|
|
|
|
| |
Пост N: 882
Зарегистрирован: 11.06.10
|
|
Отправлено: 18.06.13 14:39. Заголовок: Тоже 1 на CutePDF Wr..
Тоже 1 на CutePDF Writer
|
|
|
|
| |
Пост N: 3233
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.13 14:42. Заголовок: AlexMyr Спасибо. Ду..
AlexMyr Спасибо. Думал только у меня такой глюк а оно во как.
|
|
|
|
| |
Пост N: 15
Зарегистрирован: 27.07.10
|
|
Отправлено: 18.06.13 14:52. Заголовок: Модераторы, можно уб..
Модераторы, можно убрать предыдущее сообщение Uldamir? Это моё, машинально логин вписал, а оно и ушло. Повторю и дополню: Bullzip PDF Printer. 2 страницы. Хотя в трее выбросил сообщение, что напечатана 1. И строки начинаются со 2-й на каждом листе.
|
|
|
|
| |
Пост N: 883
Зарегистрирован: 11.06.10
|
|
Отправлено: 18.06.13 14:59. Заголовок: Vladimir пишет: И с..
Vladimir пишет: цитата: | И строки начинаются со 2-й на каждом листе. |
|
и на CutePDF Writer тоже со второй
|
|
|
|
| |
Пост N: 115
Зарегистрирован: 19.05.05
|
|
Отправлено: 18.06.13 15:34. Заголовок: doPDF v7 печать со в..
doPDF v7 печать со второй строки - 1 лист
|
|
|
|
| |
Пост N: 3235
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.06.13 15:59. Заголовок: Всем спасибо за тест..
Всем спасибо за тесты !!! Вопросик. Может есть у кого (кто сам дописывал) метод в Win_prn позволяющий вывести текст вписанный в прямоугольник ? По сути аналог wapi_DrawText или Pstextbox из PageScript.
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 24.04.13
|
|
Отправлено: 19.06.13 08:29. Заголовок: Подскажите где найти..
Подскажите где найти описание параметров и методов класса Win_prn ?
|
|
|
|
|
| |
Пост N: 884
Зарегистрирован: 11.06.10
|
|
Отправлено: 19.06.13 08:53. Заголовок: azoo пишет: Подскаж..
azoo пишет: цитата: | Подскажите где найти описание |
|
Только если почитать исходник core\contrib\hbwin\win_tprn.prg и посмотреть тесты core\contrib\hbwin\tests\prn*.prп
|
|
|
|
| |
Пост N: 12
Зарегистрирован: 24.04.13
|
|
Отправлено: 19.06.13 11:27. Заголовок: Только если почитать..
цитата: | Только если почитать исходник core\contrib\hbwin\win_tprn.prg и посмотреть тесты core\contrib\hbwin\tests\prn*.prп |
| AlexMyr , во как сурово Вышеуказанный пример вполне рабочий. На его основе можно написать процедуру вывода на печать указанного текстового файла на печать и не потребуются тогда Dosprn, Sprint и т.п. Или есть в Harbour какие-то другие возможности отправки текстового вывода на win-принтер ?
|
|
|
|
| постоянный участник
|
Пост N: 388
Зарегистрирован: 06.02.07
|
|
Отправлено: 20.06.13 13:48. Заголовок: azoo , попробую "..
azoo , попробую "втупую", хотя бы "для ориентировки" перевести про параметры и методы Win_prn (из win_tprn.prg). Кто "попродвинутее" - поредактируйте, если есть желание и надобность. Авось кому пригодится ;) - - - - - win_Prn() сделан для простой эмуляции печати из Clipper на матричном принтере. При печати на матричном принтере единицами измерения являются CPI (символов на дюйм) и LPI (строк на дюйм). Даже если для win_prn() параметр "Mapping Mode" равен WIN_MM_TEXT, то для ::SetFont() значения параметра xWidth все равно должны указываться в CPI, а не в пикселах. По умолчанию значение ::LineHeight равно 6 строкам на дюйм, поэтому ::NewLine() работает как перевод строки ("Line Feed") на матричных принтерах. Если вам это не подходит, переопределите то, что вам нужно, так, как вам нужно. METHOD New( cPrinter ) Создает новый объект класса Параметры: - cPrinter - строка, определяющая принтер, на который пойдет вывод; по умолчанию - текущий принтер METHOD Create() Создает DC (? как перевести?) и устанавливает шрифт "Courier New", ориентацию (Orientation), количество копий (Copies), лоток (так ли?) принтера (Bin#) Параметров нет. Примечание: Create() (и StartDoc() ) должны вызываться до начала печати. METHOD Destroy() Вызывает функцию EndDoc() - восстанавливает шрифт по умолчанию, удаляет DC. DESTRUCTOR Destruct() METHOD StartDoc( cDocName ) Начало печати документа. Вызывает StartPage() Параметры: - cDocName - строка, имя документа METHOD EndDoc( lAbortDoc ) Конец печати документа. Вызывает EndPage(), если lAbortDoc не равно .T. METHOD StartPage() Начало новой страницы. Параметров нет. METHOD EndPage( lStartNewPage ) Конец страницы. Параметры: - lStartNewPage ; если равно .T., то вызывается StartPage() для перехода на новую страницу. METHOD NewLine() Перевод на следующую строку. METHOD NewPage( lDelay ) Начало печати новой страницы. Параметры: - lDelay ; если равно .T., то новая страница создается не немедленно, а непосредственно перед первым выводом на печать на нее METHOD CheckPage() (проверяет страницу?) METHOD GetDocumentProperties() Получить свойства документа. Возвращает win_GetDocumentProperties( ::PrinterName, @::FormType, @::Landscape, @::Copies, @::BinNumber, @::fDuplexType, @::fPrintQuality, @::PaperLength, @::PaperWidth ) METHOD SetFont( cFontName, nPointSize, xWidth, nBold, lUnderline, lItalic, nCharSet, lManualSize ) Установка шрифта. - cFontName - строка, название шрифта - nPointSize - плотность по высоте (строк на дюйм, LPI) - xWidth - плотность по ширине (символов на дюйм, CPI) - nBold - полужирный (0 или 1) (? почему не "logical"?) - lUnderline - подчеркнутый - lItalic - курсив - nCharSet - номер используемого набора символов - lManualSize - установка размера вручную Примечание: xWidth указывается в символах на дюйм ("CharactersPerInch") _или_ (для точного указания вручную) как массив { nMul, nDiv } который вычисляет значение "CharactersPerInch" (например, для "Condensed" - 16.67 симв./дюйм массив == { 3,-50 } ) _или_ ZERO ( 0 ) для установки ширины шрифта по умолчанию для nPointSize; если xWidth (или nDiv) < 0 , то эмулируется шрифт Fixed METHOD SetDefaultFont() Установить шрифт по умолчанию. Параметров нет. METHOD GetFonts() Возвращает массив { "FontName", lFixed, lTrueType, nCharSetRequired } METHOD Bold( nWeight ) METHOD UnderLine( lUnderline ) METHOD Italic( lItalic ) METHOD SetDuplexType( nDuplexType ) // Get/Set current Duplexmode METHOD SetPrintQuality( nPrintQuality ) // Get/Set Printquality METHOD CharSet( nCharSet ) METHOD SetPos( nPosX, nPosY ) !!! Значения указывать в порядке ( Col, Row ) - "позиция в строке, за ней строка, - а НЕ "строка, за ней позиция в строке" ( Row, Col ) METHOD SetColor( nClrText, nClrPane, nAlign ) METHOD SetBkMode( nMode ) // Set Background mode: WIN_TRANSPARENT or WIN_OPAQUE METHOD TextOut( cString, lNewLine, lUpdatePosX, nAlign ) // nAlign : WIN_TA_* METHOD TextOutAt( nPosX, nPosY, cString, lNewLine, lUpdatePosX, nAlign ) !!! Значения указывать в порядке ( Col, Row ) - "позиция в строке, за ней строка, - а НЕ "строка, за ней позиция в строке" ( Row, Col ) METHOD SetPen( nStyle, nWidth, nColor ) METHOD Line( nX1, nY1, nX2, nY2 ) METHOD Box( nX1, nY1, nX2, nY2, nWidth, nHeight ) METHOD Arc( nX1, nY1, nX2, nY2 ) METHOD Ellipse( nX1, nY1, nX2, nY2 ) METHOD FillRect( nX1, nY1, nX2, nY2, nColor ) METHOD GetCharWidth() METHOD GetCharHeight() METHOD GetTextWidth( cString ) METHOD GetTextHeight( cString ) METHOD DrawBitmap( oBmp ) /* Clipper compatible functions. */ METHOD SetPRC( nRow, nCol ) // Based on ::LineHeight and current ::CharWidth METHOD PRow() METHOD PCol() METHOD MaxRow() // Based on ::LineHeight and Form dimensions METHOD MaxCol() // Based on ::CharWidth and Form dimensions METHOD MM_TO_POSX( nMm ) // Convert position on page from MM to pixel location Column METHOD MM_TO_POSY( nMm ) // " " " " " " " " " Row METHOD INCH_TO_POSX( nInch ) // Convert position on page from INCH to pixel location Column METHOD INCH_TO_POSY( nInch ) // " " " " " " " " " Row METHOD TextAtFont( nPosX, nPosY, cString, cFont, nPointSize,; // Print text string at location nWidth, nBold, lUnderLine, lItalic, nCharSet,; // in specified font and color. lNewLine, lUpdatePosX, nColor, nAlign ) // Restore original font and colour // after printing. Печатает строку текста в указанной позиции/строке указанным шрифтом (с размером и проч. свойствами) указанного цвета. После печати ВОССТАНАВЛИВАЕТ установки шрифта и его цвета, которые были до вызова этого метода. METHOD GetDeviceCaps( nCaps ) - - - - -
|
|
|
|
| |
Пост N: 16
Зарегистрирован: 24.04.13
|
|
Отправлено: 15.08.13 17:12. Заголовок: DosPrn не перехватыв..
DosPrn не перехватывает печать из приложений [x]Harbour. Логично, т.к. DosPrn для DOS-приложений. Поэтому при переходе на [x]Harbour там, где был вывод на Win-принтер необходимо переписывать программу с использованием например метода Win_prn. Я прав?
|
|
|
|
| |
Пост N: 3386
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.08.13 17:17. Заголовок: azoo пишет: DosPrn..
azoo пишет: цитата: | DosPrn не перехватывает печать из приложений [x]Harbour. |
| Он перехватывает порт LPT , поэтому если приложение по прежнему пишет прямо в порт то и переделывать не надо. PS Не проверял (с)
|
|
|
|
| |
Пост N: 54
Зарегистрирован: 24.04.13
|
|
Отправлено: 11.12.13 09:36. Заголовок: Dima, перехватчик LP..
Dima, перехватчик LPT1 в dosprn - DOS-программка prn2file.com. Она запускается из autoexec.nt при старте DOS-приложения. При запуске windows-приложения, скомпилированного Harbour, autoexec.nt не запускается и соответственно LPT1 не перехватывается. Отсюда следует вывод, что DOS-приложения, которые выводили печать на Windows-принтеры через dosprn не будут работать. Кто-нибудь сталкивался с такой проблемой? Я поступил так: написал процедуру, которая перехватывает весь вывод на LPT1 в тестовый файл. Затем появляется диалог просмотреть файл на экране или распечатать. При выборе "распечатать" используя класс Win_prn печатаю на лазерный принтер. Вроде всё хорошо кроме одного - нужно изменять программы.
|
|
|
|
| |
Пост N: 57
Зарегистрирован: 24.04.13
|
|
Отправлено: 04.03.14 10:46. Заголовок: По умолчанию значени..
цитата: | По умолчанию значение ::LineHeight равно 6 строкам на дюйм |
| gustow, а как изменить это значение на другое ? Например на 8 ? Написал : oPrinter:LineHeight := 8 вообще какая-то ерунда получилась - всё сжалось в 10-ю часть страницы
|
|
|
|
| |
Пост N: 143
Зарегистрирован: 19.05.05
|
|
Отправлено: 04.03.14 13:53. Заголовок: GUSTAV писал При печ..
GUSTAV писал цитата: | При печати на матричном принтере ... По умолчанию значение ::LineHeight равно 6 строкам на дюйм |
| У вас действительно матричный принтер? Потому что для обычных принтеров, пример определения высоты линии oprn:LineHeight := oprn:GetCharHeight()
|
|
|
|
| |
Пост N: 58
Зарегистрирован: 24.04.13
|
|
Отправлено: 19.03.14 12:51. Заголовок: nick_mi, здесь речь ..
nick_mi, здесь речь об эмуляции печати(Clipper на матричном принтере) на Windows-принтерах.
|
|
|
|
| |
Пост N: 80
Зарегистрирован: 24.04.13
|
|
Отправлено: 11.12.14 15:07. Заголовок: Нужно было ужать рас..
Нужно было ужать распечатку чтобы влезла на лист A4. Указал oPrinter:LineHeight := 90, стало нормально. Насчет значения LineHeight = 6 по умолчанию сомневаюсь. Судя по всему >100.
|
|
|
Ответов - 21
, стр:
1
2
All
[только новые]
|
|