powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать HTML-файла
19 сообщений из 19, страница 1 из 1
Печать HTML-файла
    #36958873
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите. Срочно.
Как направить на печать HTML-файл без выбора принтера. Какой стоит в системе по умолчанию, туда и посылать.
Спасибо.
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36959048
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSR,
Попробуйте через ShellExecute() :
Код: plaintext
ShellExecute( 0 ,"print","myhtml.html","","", 0 )
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36959070
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShellExecute() предлагает _выбрать_ принтер, а мне этого не надо. Что стоит туда и посылать.
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36959677
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSR,
Более изящное решение через Internet Explorer :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#DEFINE OLECMDID_PRINT  6   
#DEFINE OLECMDID_PRINTPREVIEW  7   
#DEFINE OLECMDEXECOPT_PROMPTUSER  1   
#DEFINE OLECMDEXECOPT_DONTPROMPTUSER  2   
DECLARE INTEGER SetForegroundWindow IN user32 INTEGER hWindow  
    
LOCAL cSource
cSource = "C:\keys.html"  
LOCAL oIE As InternetExplorer.Application  
oIE = CREATEOBJECT("InternetExplorer.Application")  
WITH oIE  
  	.Navigate(cSource)  
  	.Visible=.f.  
  	= SetForegroundWindow(.HWND)  
  	.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER)  
ENDWITH
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36960911
можно и через Word напечатать, если он конечно установлен
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
loWord = CreateObject("Word.Application")
	
WITH loWord
    SELECT docs
    lcFileName = "c:\1111111.htm"
    IF FILE(lcFileName)
        WAIT "Печать документа..." WINDOW NOWAIT
        .Documents.Open(lcFileName)
        *-Установим параметры страницы
        *.ActiveDocument.PageSetup.LeftMargin =  0 
        *.ActiveDocument.PageSetup.RightMargin =  0 
        *.ActiveDocument.PageSetup.TopMargin =  0 
        *.ActiveDocument.PageSetup.BottomMargin =  0 
        *-Печатаем 
        .ActiveDocument.PrintOut(False)
        WAIT CLEAR
    ELSE
        WAIT WINDOW "Документ не найден!" TIMEOUT  1 	
    ENDIF	    
    * Закрыть сеанс Word
    .Quit( 0 )
ENDWITH		
 		
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36960916
Строка
SELECT docs
в предыдущем моем посте конечно же лишняя
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36961488
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу Internet Explorer. Прога запустилась, подумала о чем-то своем и все...

По поводу M$ Word. Все хорошо, только в запущенных процессах висит столько WINWORD, сколько раз была сделана печать. Можно, конечно, убивать процесс после печати. И немного об ориентации листа и TOP, LEFT, RIGHT хотелось бы узнать - как это прописать в программу. Если не трудно.
Спасибо.
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36961663
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSRПо поводу Internet Explorer. Прога запустилась, подумала о чем-то своем и все...

Какой фокс ? Какая ОС ? Полный путь к HTML указан ? Попробуйте на простеньком HTML без наворотов. У меня из VFP9+SP2/WinXP/IE8 идёт на ура, с графикой.
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36961720
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КонецЦикламожно и через Word напечатать, если он конечно установлен
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
loWord = CreateObject("Word.Application")
	
WITH loWord
    SELECT docs
    lcFileName = "c:\1111111.htm"
    IF FILE(lcFileName)
        WAIT "Печать документа..." WINDOW NOWAIT
        .Documents.Open(lcFileName)
        *-Установим параметры страницы
        *.ActiveDocument.PageSetup.LeftMargin =  0 
       
    ENDIF	    
    * Закрыть сеанс Word
    .Quit( 0 )
ENDWITH		
 		

бяки
-не всякий НТМ откроется в ворде(в некоторых из инета по сотне вложенных таблиц или использованы супер украшения)
-ругань на отсутствие таблицы стилей
-некорректная обработка <DIV>
- *-Установим параметры страницы не пройдет,если несколько разделов с разным количеством колонок и разной шириной-ориентацией листа(тоже и.н.е.т)
*.ActiveDocument.PageSetup.LeftMargin = 0


если же НТМ вполне земные,то можно
-запустить один ворд
-и в цикле открывать документы через documents.open...print....activedocument.close
-закрыть ворд
-имела вариант печати из конкретного ворд-дока с использованием DIR конкретного каталога
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36962663
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
reware,

У меня из VFP8 + SP2, WinXP, IE8
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36962667
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

HTML совсем простой - две параллельные таблицы в них еще по три. Без наворотов, картинок и прочей сопливой лабуды. Куда уж проще.
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36963051
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSR,

тогда меньше всего возни с
-..... печать из конкретного ворд-дока с использованием DIR конкретного каталога

-поместить НТМ в один каталог с htm_pech.doc
-открыть htm_pech.doc c макросом(разрешив выполнение макросов)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
Sub печать_нтм()
''печать_нтм для печати *.НТМ из текущего каталога
''-нажми  Alt+F8
''-выполни макрос  печать_нтм
''-можно настроить макрос на конкретный принтер

Dim s1, s2, j1, j2
s1 = UCase(Word.ActiveDocument.FullName)
j1 = InStr(s1, "\htm_pech.doc")
s2 = Mid(s1,  1 , j1)
s1 = Dir(s2 & "*.htm*")
Do While Len(s1) >  0 
     Documents.Open FileName:=s2 & s1, ConfirmConversions:=False, _
     ReadOnly:=False, AddToRecentFiles:=False, _
     PasswordDocument:="", PasswordTemplate:="", _
     Revert:=False, WritePasswordDocument:="", _
     WritePasswordTemplate:="", _
     Format:=wdOpenFormatAuto, XMLTransform:=""
    If ActiveWindow.View.SplitSpecial = wdPaneNone Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    Else
        ActiveWindow.View.Type = wdPrintView
    End If
    With Selection.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = CentimetersToPoints( 1 )
        .BottomMargin = CentimetersToPoints( 1 )
        .LeftMargin = CentimetersToPoints( 2 )
        .RightMargin = CentimetersToPoints( 1 )
        .Gutter = CentimetersToPoints( 0 )
        .HeaderDistance = CentimetersToPoints( 1 . 25 )
        .FooterDistance = CentimetersToPoints( 1 . 25 )
        .PageWidth = CentimetersToPoints( 21 )
        .PageHeight = CentimetersToPoints( 29 . 7 )
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets =  1 
        .GutterPos = wdGutterPosLeft
    End With
    WordBasic.ViewFooterOnly
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        Text:="FILENAME  \p ", PreserveFormatting:=True
    Selection.TypeText Text:="  "
    Selection.InsertDateTime DateTimeFormat:="d MMMM yyyy 'г.'", _
        InsertAsField:=False, DateLanguage:=wdRussian, _
    CalendarType:=wdCalendarWestern, InsertAsFullWidth:=False
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        Text:="PAGE  ", PreserveFormatting:=True
    Selection.TypeText Text:="/"
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        Text:="NUMPAGES  ", PreserveFormatting:=True
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
    ''''''''''''''''''''''''''''''''
    ''ActivePrinter = "doPDF v7"
    ''''''''''''''''''''''''''''''''
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, _
        Item:=wdPrintDocumentContent, Copies:= 1 , Pages:="", _
        PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, _
        Background:=True, PrintToFile:=False, PrintZoomColumn:= 0 , _
        PrintZoomRow:= 0 , PrintZoomPaperWidth:= 0 , _
        PrintZoomPaperHeight:= 0 
    ActiveDocument.Close  0 
    s1 = Dir
    Loop
    
End Sub
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36963148
ENDOFUSSRПо поводу Internet Explorer. Прога запустилась, подумала о чем-то своем и все...

По поводу M$ Word. Все хорошо, только в запущенных процессах висит столько WINWORD, сколько раз была сделана печать. Можно, конечно, убивать процесс после печати. И немного об ориентации листа и TOP, LEFT, RIGHT хотелось бы узнать - как это прописать в программу. Если не трудно.
Спасибо.

все winwordы уничтожаются по quit(0)...
правда, если вы код скопировали один в один, то по идее у вас должна генериться ошибка, что переменная false не найдена, тогда строка quit(0) не выполняется и, действительно, в этом случае будут висеть процессы winword...
тогда надо где-нибудь в самом начале вставить
#DEFINE True .T.
#DEFINE False .F.

Ориентация листа устанавливается так
.ActiveDocument.PageSetup.Orientation = 0 или 1, где 0-книжная, а 1-альбомная

если под TOP, LEFT, RIGHT имеется в виду поля страницы, то они устанавливаются через LeftMargin, RightMargin, TopMargin, BottomMargin как я выше уже показал
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36965424
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КонецЦикла,

Все правильно прописал. Да беда в том, что заказчик напрочь отказывается от установки WORDa.
Ему, говорит лишнего не надо.
Вот порыскал и нашел вариант BAT-файла (привожу саму команду):
Строка оригинала: START RUNDLL32.EXE MSHTML.DLL,PrintHTML %File2Print% %Printer%
Моя строка: START RUNDLL32.EXE MSHTML.DLL,PrintHTML "DUMMY.HTML" "Samsung ML-3050 Series"
В системе два принтера, но хотя я прописал конкретный, все равно открывается диалог "Выбор принтера". Уже тошнит о безысхода. Может кто конкретно поможет.
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36965450
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ENDOFUSSR,

авторДа беда в том, что заказчик напрочь отказывается от установки WORDa.
Ему, говорит лишнего не надо


а что у него есть excel, openOffice ...............
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36965488
ENDOFUSSR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
Голая винда и IE, пара принтеров и растопыренные пальчики!
...
Рейтинг: 0 / 0
Печать HTML-файла
    #36969426
ну тогда только через IE примерно так, как уже выше reware предложил
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
oIE = CreateObject("InternetExplorer.Application")

oIE.left= 50  
oIE.top =  100  
oIE.height =  380 
oIE.width =  450 
oIE.menubar =  0  
oIE.toolbar =  0 
oIE.statusbar =  0 
oIE.navigate("c:\1111.htm") 
*oIE.visible =  1 
oIE.ExecWB( 6 ,  2 )
oIE.Quit()

полное описание InternetExplorer Object здесь
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Печать HTML-файла
    #37899845
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ап. Тоже нужна печать через ИЕ в тихом режиме.
В HKCU/SW/MS/IE/PageSetup нашёл всё, кроме ориентации листа (портрет/ландшафт).
Собственно вопрос - каким образом установить ландшафтную ориентацию?
...
Рейтинг: 0 / 0
Печать HTML-файла
    #37902983
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кому интересно - настройки зависят от принтера и лежат в HKCU/Printers/DevModePerUser/ (как правило) в бинарном виде. Стандартный фоксовый класс registry(из ffc) с REG_BINARY работать не умеет, пришлось писать свой велосипед.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Печать HTML-файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]