On-line: PSP, Haz, гостей 0. Всего: 2 [подробнее..]
АвторСообщение
администратор




Пост 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


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 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 копии на лазерном и на струйнике

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 18.06.13 13:23. Заголовок: Harbour 3.2.09dev (r..


Harbour 3.2.09dev (r1306061203) Mingw

2 копии на лазерном -- все Ok!

Спасибо: 0 
Цитата Ответить
администратор




Пост N: 3231
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.13 13:39. Заголовок: nick_mi ZAlex Спасиб..


nick_mi ZAlex Спасибо !
А я юзал виртуальные принтера и на любом из них всегда получал 1 копию и вот пробнул
на железном , действительно все нормально.
Вероятно какой то косяк с виртуальными принтерами из Harbour

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3232
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.13 14:01. Заголовок: А на виртуальном при..


А на виртуальном принтере кто то может попробовать ?
Я юзал VentaFax , PdfFactory 3.x , PdfFactory 4.x , Snagit 10 и виртуалки от MS Office

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 882
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 18.06.13 14:39. Заголовок: Тоже 1 на CutePDF Wr..


Тоже 1 на CutePDF Writer

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3233
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.13 14:42. Заголовок: AlexMyr Спасибо. Ду..


AlexMyr
Спасибо.
Думал только у меня такой глюк а оно во как.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 27.07.10
ссылка на сообщение  Отправлено: 18.06.13 14:52. Заголовок: Модераторы, можно уб..


Модераторы, можно убрать предыдущее сообщение Uldamir? Это моё, машинально логин вписал, а оно и ушло.

Повторю и дополню:
Bullzip PDF Printer.
2 страницы. Хотя в трее выбросил сообщение, что напечатана 1. И строки начинаются со 2-й на каждом листе.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 883
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 18.06.13 14:59. Заголовок: Vladimir пишет: И с..


Vladimir пишет:

 цитата:
И строки начинаются со 2-й на каждом листе.

и на CutePDF Writer тоже со второй

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 115
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 18.06.13 15:34. Заголовок: doPDF v7 печать со в..


doPDF v7 печать со второй строки - 1 лист

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3235
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.06.13 15:59. Заголовок: Всем спасибо за тест..


Всем спасибо за тесты !!!

Вопросик. Может есть у кого (кто сам дописывал) метод в Win_prn позволяющий вывести
текст вписанный в прямоугольник ? По сути аналог wapi_DrawText или Pstextbox из PageScript.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 24.04.13
ссылка на сообщение  Отправлено: 19.06.13 08:29. Заголовок: Подскажите где найти..


Подскажите где найти описание параметров и методов класса Win_prn ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 884
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 19.06.13 08:53. Заголовок: azoo пишет: Подскаж..


azoo пишет:

 цитата:
Подскажите где найти описание

Только если почитать исходник core\contrib\hbwin\win_tprn.prg и посмотреть тесты core\contrib\hbwin\tests\prn*.prп

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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-принтер ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 )
- - - - -


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 16
Зарегистрирован: 24.04.13
ссылка на сообщение  Отправлено: 15.08.13 17:12. Заголовок: DosPrn не перехватыв..


DosPrn не перехватывает печать из приложений [x]Harbour.
Логично, т.к. DosPrn для DOS-приложений.
Поэтому при переходе на [x]Harbour там, где был вывод на Win-принтер необходимо переписывать программу
с использованием например метода Win_prn.
Я прав?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3386
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.08.13 17:17. Заголовок: azoo пишет: DosPrn..


azoo пишет:

 цитата:

DosPrn не перехватывает печать из приложений [x]Harbour.


Он перехватывает порт LPT , поэтому если приложение по прежнему пишет прямо в порт
то и переделывать не надо.

PS
Не проверял (с)

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 печатаю на лазерный принтер.
Вроде всё хорошо кроме одного - нужно изменять программы.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 57
Зарегистрирован: 24.04.13
ссылка на сообщение  Отправлено: 04.03.14 10:46. Заголовок: По умолчанию значени..



 цитата:
По умолчанию значение ::LineHeight равно 6 строкам на дюйм



gustow, а как изменить это значение на другое ? Например на 8 ?

Написал :
oPrinter:LineHeight := 8
вообще какая-то ерунда получилась - всё сжалось в 10-ю часть страницы

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 143
Зарегистрирован: 19.05.05
ссылка на сообщение  Отправлено: 04.03.14 13:53. Заголовок: GUSTAV писал При печ..


GUSTAV писал

 цитата:
При печати на матричном принтере ... По умолчанию значение ::LineHeight равно 6 строкам на дюйм


У вас действительно матричный принтер? Потому что для обычных принтеров, пример определения высоты
линии oprn:LineHeight := oprn:GetCharHeight()

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 58
Зарегистрирован: 24.04.13
ссылка на сообщение  Отправлено: 19.03.14 12:51. Заголовок: nick_mi, здесь речь ..


nick_mi, здесь речь об эмуляции печати(Clipper на матричном принтере) на Windows-принтерах.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 21 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 409
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет