Download Latest Version EmulPrintServ.zip (3.5 MB)
Email in envelope

Get an email when there's a new version of Emulator print-server

Home / src
Name Modified Size InfoDownloads / Week
Parent folder
readme!!!.txt 2014-12-29 11.5 kB
print.vbs 2014-12-29 3.7 kB
run.vbs 2014-12-22 55 Bytes
print.bat 2014-12-22 2.1 kB
Totals: 4 Items   17.3 kB 0
*** ENGLISH ***

Emulator print-server
Developer: Badlo Sergei G.
H-page: http://raxp.radioliga.com
Demo-video: https://www.youtube.com/watch?v=J5e4MkniWbk

System requirements and dependencies:
1. Windows 9õ/NT/XP/Vista/7/8/8.1/10.
2. The presence of a virtual printer in the PDF-document on the remote machine.
3. Any printer on the local machine.
4. rassharennye CanonPrintServ directory on the local machine.

=======================================================================

This emulator (Batch file) designed to simulate a network print server and is used to solve the problem of lack of drivers on the manufacturer's old (network, shared) printer under the new operating system on the remote machine. In particular - on the local machine c disable shared printer operating system Windows XP x32 and outdated iron on the remote - OS Windows 7/8/10 x64 and 64-bit drivers for non-existent, for example the printer out of production. Also, this solution allows you did not install the driver for a remote printer on your network and have any target OS when printing is performed by simply copying the desired document in PDF-format or printing any document format into a virtual PDF-printer on the network location of the machine with a working emulator print local server and an 'old' printer with 'old' OS.


VBS-file code emulator:

' Ìåñòîðàñïîëîæåíèå ýìóëÿòîðà ïðèíò-ñåðâåðà
DirPath = "f:\EmulPrintServ"
' Öåëåâàÿ ñåòåâàÿ ïàïêà-ñáîðíèê ôàéëîâ äëÿ ïå÷àòè
FolderPath = DirPath & "\CanonPrintServ"
' Ôàéë ëîããèðîâàíèÿ
Logger = "\print_" & Date & ".log"


' Ñîçäàåì îáúåêò äëÿ çàïóñêà ïðèëîæåíèé
set WshShell = WScript.CreateObject("WScript.Shell")
' Ñîçäàåì îáúåêò FSO äëÿ ðàáîòû ñ ôàéëîâîé ñèñòåìîé
Dim ens
Dim datas
Dim FSO
set FSO = CreateObject("Scripting.FileSystemObject")

On Error Resume Next ' ñòàâèì ïåðåõâàò÷èê îøèáîê, åñëè íå óäàåòñÿ óäàëèòü ôàéë (äà è íå÷åãî þçâåðþ íà îøèáêè ñìîòðåòü)
Do ' êðóòèì â áåñêîíå÷íîì öèêëå

	' ÷óòü åùå ïîäîæäåì, ÷òîáû íå ãðóçèòü ïðîöåññîð
	WScript.Sleep 1000 'êîë-âî ìèëëèñåêóíä

	' Îòêðûâàåì ôàéë äëÿ äîçàïèñè ñåàíñîâ ïå÷àòè
	Set f = fso.OpenTextFile(FolderPath & Logger, 8, True)

	' Ñêàíèðóåì öåëåâóþ ñåòåâóþ ïàïêó-ñáîðíèê
	Set Files = FSO.GetFolder(FolderPath).Files 
	For Each File In Files ' ïîëó÷àåì ñïèñîê ôàéëîâ ñ ðàñøèðåíèåì PDF
		If LCase(fso.GetExtensionName(file)) = "pdf" Then 
	
			' Ïîëó÷àåì äàòó ñîçäàíèÿ ôàéëà è ìîäèôèêàöèè ïðè ïîÿâëåíèè åãî â êàòàëîãå è ñèñòåìíîãî âðåìåíè
			strTmp = FormatDateTime(file.DateCreated, 2) & String(1,vbTab) & FormatDateTime(file.DateCreated, 3) & String(1,vbTab) & FormatDateTime(file.datelastmodified, 2) & String(1,vbTab) & FormatDateTime(file.datelastmodified, 3) & String(1,vbTab) & file.Name' & vbCrlf

			' Îòêðûâàåì ôàéë äàìïà äëÿ ñêàíèðîâàíèÿ ñåàíñîâ ïå÷àòè
			Set ts = fso.OpenTextFile(FolderPath & Logger, 1)
			ens = 1
			Do While Not ts.AtEndOfStream
			 datas = ts.ReadLine
			 If datas = strTmp Then
			  ens = 0
			 End If
			loop
			ts.Close


			' ïðîâåðÿåì íà òî, ÷òî ôàéë ñ òîé æå äàòîé ñîçäàíèÿ 
			' è èñêëþ÷åíèÿ çàöèêëèâàíèÿ ïå÷àòè ïðè ñêàíèðîâàíèè öåëåâîé ïàïêè-ñáîðíèêà
			If ens = 1 Then
			 ' íàéäåííûé PDF ïóñêàåì íà ïå÷àòü ñ îæèäàíèåì âûïîëíåíèÿ ïå÷àòè
			 WshShell.Run DirPath & "\SumatraPDF.exe -print-to-default " & chr(34) & FolderPath & "\" & file.Name & chr(34), 1, true

			 ' Äîçàïèñü ñåàíñîâ ïå÷àòè
			 f.WriteLine(strTmp)
			End If

			' ÷óòü åùå ïîäîæäåì, à âäðóã :)
			WScript.Sleep 1000 'êîë-âî ìèëëèñåêóíä
			' óáèâàåì íàéäåííûé ôàéë
			file.delete true

		End If
	Next
	' çàêðûâàåì ôàéë äëÿ äîçàïèñè ñåàíñîâ ïå÷àòè
	f.Close

Err.Clear
loop
On Error GoTo 0



Batch-file code emulator:

echo off
chcp 1251

d:
cd f:\EmulPrintServ\CanonPrintServ\
echo %cd%


:print
rem Çàäåðæêà ÷åðåç ping
ping localhost -w 3000 > nul


echo "Start scan PDF files..."
FOR %%X in ("*.pdf") DO (

	rem Ëîããèðóåì
	echo _ >> print.log
	date /t >> print.log
	time /t >> print.log
        echo "Start %%~dpnX.pdf" >> print.log

	rem Ïå÷àòü èç ñåòåâîãî êàòàëîãà
	"f:\EmulPrintServ\SumatraPDF.exe" -print-to-default "%%~dpnX.pdf"
	
	rem Ëîããèðóåì
	time /t >> print.log
	echo "Finished %%~dpnX.pdf" >> print.log

        rem Óäàëÿåì íàïå÷àòàííîå
	del /f /q "%%~dpnX.pdf"
	rem Çàäåðæêà ÷åðåç ping
	ping localhost -w 1000 > nul
)

rem Ïîâòîð ñêàíà
goto print


VBS-script code run console emulator Batch-file in stealth mode:

CreateObject("Wscript.Shell").Run "print.bat", 0, False



ORDER INSTALLATION and OPERATION OF THE EMULATOR

1. Make the copy directory 'EmulPrintServ' with all its contents to your local PC with a printer connected to the disk 'D' (or any other correction paths).
2. Product 'CanonPrintServ' from the directory 'EmulPrintServ' rassharivat as a network.
3. puts in startup and run VBS-script 'run.vbs' launch of the console emulator in stealth mode.
4. On the remote machine, make connections directory 'CanonPrintServ' as a network drive (net use \\ip\CanonPrintServ or as you like).
5. If necessary, press Dokumenti not install the PDF-file on the remote machine, a virtual PDF-printer, for example doPDF.
6. On the remote machine is printing the required number of documents (pages) to a virtual PDF-printer in a mapped network drive by default, or simply copy the desired PDF-document.
7. The emulator scans the directory 'CanonPrintServ' to new PDF-documents, produces consistent print them through the console free utility 'SumatraPDF.exe' https://kjkpub.s3.amazonaws.com/sumatrapdf/rel/SumatraPDF-3.0.zip and subsequent removal of the parallel logging operations in the file 'print_date.log'.

Profit :)




*** RUSSIAN ***

Ýìóëÿòîð ïðèíò-ñåðâåðà
Ðàçðàáîò÷èê: Áàäëî Ñåðãåé Ãðèãîðüåâè÷
H-page: http://raxp.radioliga.com
Demo-video: https://www.youtube.com/watch?v=J5e4MkniWbk

Cèñòåìíûå òðåáîâàíèÿ è çàâèñèìîñòè:
1. Windows 9õ/NT/XP/Vista/7/8/8.1/10.
2. Íàëè÷èå âèðòóàëüíîãî ïðèíòåðà â PDF-äîêóìåíò íà óäàëåííîé ìàøèíå.
3. Ëþáîé ïðèíòåð íà ëîêàëüíîé ìàøèíå.
4. Ðàñøàðåííûé êàòàëîã CanonPrintServ íà ëîêàëüíîé ìàøèíå.

=======================================================================

Äàííûé ýìóëÿòîð (Batch file) ïðåäíàçíà÷åí äëÿ èìèòàöèè ñåòåâîãî ïðèíò-ñåðâåðà è ñëóæèò äëÿ ðåøåíèÿ ïðîáëåìû îòñóòñòâèÿ äðàéâåðîâ ïðîèçâîäèòåëÿ íà ñòàðûé (ñåòåâîé, ðàñøàðåííûé) ïðèíòåð ïîä íîâûå ÎÑ íà óäàëåííîé ìàøèíå.  ÷àñòíîñòè - íà ëîêàëüíîé ìàøèíå c ðàñøàðåííûì ïðèíòåðîì ÎÑ Windows XP x32 è óñòàðåâøåå æåëåçî, íà óäàëåííîé - ÎÑ Windows 7/8/10 x64 è äðàéâåðîâ ïîä 64 bit íå ñóùåñòâóåò, ê ïðèìåðó ïðèíòåð ñíÿò ñ ïðîèçâîäñòâà. Òàêæå äàííîå ðåøåíèå ïîçâîëÿåò âîîáùå íå óñòàíàâëèâàòü äðàéâåðà íà óäàëåííûé ïðèíòåð â âàøåé ëîêàëüíîé ñåòè è èìåòü ëþáóþ öåëåâóþ ÎÑ, êîãäà ïå÷àòü îñóùåñòâëÿåòñÿ ïðîñòûì êîïèðîâàíèåì íóæíîãî äîêóìåíòà â PDF-ôîðìàòå èëè ïå÷àòüþ äîêóìåíòà ëþáîãî ôîðìàòà â âèðòóàëüíûé PDF-ïðèíòåð íà ñåòåâóþ ïàïêó ìàøèíû ñ ðàáîòàþùèì ýìóëÿòîðîì ïðèíò-ñåðâåðà è ëîêàëüíûì 'ñòàðûì' ïðèíòåðîì ñî 'ñòàðîé' ÎÑ.


Êîä ýìóëÿòîðà ïîëíîñòüþ íà VBS:

' Ìåñòîðàñïîëîæåíèå ýìóëÿòîðà ïðèíò-ñåðâåðà
DirPath = "f:\EmulPrintServ"
' Öåëåâàÿ ñåòåâàÿ ïàïêà-ñáîðíèê ôàéëîâ äëÿ ïå÷àòè
FolderPath = DirPath & "\CanonPrintServ"
' Ôàéë ëîããèðîâàíèÿ
Logger = "\print_" & Date & ".log"


' Ñîçäàåì îáúåêò äëÿ çàïóñêà ïðèëîæåíèé
set WshShell = WScript.CreateObject("WScript.Shell")
' Ñîçäàåì îáúåêò FSO äëÿ ðàáîòû ñ ôàéëîâîé ñèñòåìîé
Dim ens
Dim datas
Dim FSO
set FSO = CreateObject("Scripting.FileSystemObject")

On Error Resume Next ' ñòàâèì ïåðåõâàò÷èê îøèáîê, åñëè íå óäàåòñÿ óäàëèòü ôàéë (äà è íå÷åãî þçâåðþ íà îøèáêè ñìîòðåòü)
Do ' êðóòèì â áåñêîíå÷íîì öèêëå

	' ÷óòü åùå ïîäîæäåì, ÷òîáû íå ãðóçèòü ïðîöåññîð
	WScript.Sleep 1000 'êîë-âî ìèëëèñåêóíä

	' Îòêðûâàåì ôàéë äëÿ äîçàïèñè ñåàíñîâ ïå÷àòè
	Set f = fso.OpenTextFile(FolderPath & Logger, 8, True)

	' Ñêàíèðóåì öåëåâóþ ñåòåâóþ ïàïêó-ñáîðíèê
	Set Files = FSO.GetFolder(FolderPath).Files 
	For Each File In Files ' ïîëó÷àåì ñïèñîê ôàéëîâ ñ ðàñøèðåíèåì PDF
		If LCase(fso.GetExtensionName(file)) = "pdf" Then 
	
			' Ïîëó÷àåì äàòó ñîçäàíèÿ ôàéëà è ìîäèôèêàöèè ïðè ïîÿâëåíèè åãî â êàòàëîãå è ñèñòåìíîãî âðåìåíè
			strTmp = FormatDateTime(file.DateCreated, 2) & String(1,vbTab) & FormatDateTime(file.DateCreated, 3) & String(1,vbTab) & FormatDateTime(file.datelastmodified, 2) & String(1,vbTab) & FormatDateTime(file.datelastmodified, 3) & String(1,vbTab) & file.Name' & vbCrlf

			' Îòêðûâàåì ôàéë äàìïà äëÿ ñêàíèðîâàíèÿ ñåàíñîâ ïå÷àòè
			Set ts = fso.OpenTextFile(FolderPath & Logger, 1)
			ens = 1
			Do While Not ts.AtEndOfStream
			 datas = ts.ReadLine
			 If datas = strTmp Then
			  ens = 0
			 End If
			loop
			ts.Close


			' ïðîâåðÿåì íà òî, ÷òî ôàéë ñ òîé æå äàòîé ñîçäàíèÿ 
			' è èñêëþ÷åíèÿ çàöèêëèâàíèÿ ïå÷àòè ïðè ñêàíèðîâàíèè öåëåâîé ïàïêè-ñáîðíèêà
			If ens = 1 Then
			 ' íàéäåííûé PDF ïóñêàåì íà ïå÷àòü ñ îæèäàíèåì âûïîëíåíèÿ ïå÷àòè
			 WshShell.Run DirPath & "\SumatraPDF.exe -print-to-default " & chr(34) & FolderPath & "\" & file.Name & chr(34), 1, true

			 ' Äîçàïèñü ñåàíñîâ ïå÷àòè
			 f.WriteLine(strTmp)
			End If

			' ÷óòü åùå ïîäîæäåì, à âäðóã :)
			WScript.Sleep 1000 'êîë-âî ìèëëèñåêóíä
			' óáèâàåì íàéäåííûé ôàéë
			file.delete true

		End If
	Next
	' çàêðûâàåì ôàéë äëÿ äîçàïèñè ñåàíñîâ ïå÷àòè
	f.Close

Err.Clear
loop
On Error GoTo 0


Êîä Batch-ôàéëà ýìóëÿòîðà:

echo off
chcp 1251

d:
cd f:\EmulPrintServ\CanonPrintServ\
echo %cd%


:print
rem Çàäåðæêà ÷åðåç ping
ping localhost -w 3000 > nul


echo "Start scan PDF files..."
FOR %%X in ("*.pdf") DO (

	rem Ëîããèðóåì
	echo _ >> print.log
	date /t >> print.log
	time /t >> print.log
        echo "Start %%~dpnX.pdf" >> print.log

	rem Ïå÷àòü èç ñåòåâîãî êàòàëîãà
	"f:\EmulPrintServ\SumatraPDF.exe" -print-to-default "%%~dpnX.pdf"
	
	rem Ëîããèðóåì
	time /t >> print.log
	echo "Finished %%~dpnX.pdf" >> print.log

        rem Óäàëÿåì íàïå÷àòàííîå
	del /f /q "%%~dpnX.pdf"
	rem Çàäåðæêà ÷åðåç ping
	ping localhost -w 1000 > nul
)

rem Ïîâòîð ñêàíà
goto print


Êîä VBS-ñêðèïòà çàïóñêà êîíñîëè Batch-ôàéëà ýìóëÿòîðà â ñêðûòîì ðåæèìå:

CreateObject("Wscript.Shell").Run "print.bat", 0, False



ÏÎÐßÄÎÊ ÓÑÒÀÍÎÂÊÈ È ÐÀÁÎÒÛ Ñ ÝÌÓËßÒÎÐÎÌ

1. Ïðîèçâîäèòå êîïèðîâàíèå êàòàëîãà 'EmulPrintServ' ñî âñåì ñîäåðæèìûì íà ëîêàëüíûé ÏÊ ñ ïîäêëþ÷åííûì ïðèíòåðîì íà äèñê 'D' (èëè ëþáîé äðóãîé ñ êîððåêöèåé ïóòåé).  
2. Êàòàëîã 'CanonPrintServ' èç êàòàëîãà 'EmulPrintServ' ðàñøàðèâàåòå êàê ñåòåâîé.
3. Ïîìåùàåòå â àâòîçàãðóçêó è çàïóñêàåòå VBS-ñêðèïò 'run.vbs' çàïóñêà îêíà êîíñîëè ýìóëÿòîðà â ñêðûòîì ðåæèìå.
4. Íà óäàëåííîé ìàøèíå ïðîèçâîäèòå ïîäêëþ÷åíèå êàòàëîãà 'CanonPrintServ' êàê ñåòåâîãî äèñêà (net use \\ip\CanonPrintServ èëè êîìó êàê íðàâèòñÿ).
5. Ïðè íåîáõîäèìîñòè ïå÷àòè äîêóìåíòîâ íå PDF-ôîðìàòà èíñòàëëèðóåòå Íà óäàëåííîé ìàøèíå âèðòóàëüíûé PDF-ïðèíòåð, ê ïðèìåðó doPDF.
6. Íà óäàëåííîé ìàøèíå ïðîèçâîäèòå ïå÷àòü íóæíîãî êîëè÷åñòâà äîêóìåíòîâ (ñòðàíèö) íà âèðòóàëüíûé PDF-ïðèíòåð â ïîäêëþ÷åííûé ñåòåâîé äèñê ïî-óìîë÷àíèþ èëè ïðîñòî êîïèðóåòå íóæíûé PDF-äîêóìåíò.
7. Ýìóëÿòîð ñêàíèðóåò êàòàëîã 'CanonPrintServ' íà ïîÿâëåíèå íîâûõ PDF-äîêóìåíòîâ, ïðîèçâîäèò èõ ïîñëåäîâàòåëüíóþ ïå÷àòü ÷åðåç êîíñîëü áåñïëàòíîé óòèëèòû 'SumatraPDF.exe' https://kjkpub.s3.amazonaws.com/sumatrapdf/rel/SumatraPDF-3.0.zip è ïîñëåäóþùåå óäàëåíèå ñ ïàðàëëåëüíûì ëîããèðîâàíèåì äåéñòâèé â ôàéë 'print_date.log'. 

Ïðîôèò :)
Source: readme!!!.txt, updated 2014-12-29