Hoi,
1st of all, ben een n00b op het gebied van vb.net. Maar goed, door zoeken, vallen en opstaan en proberen ben ik imho toch al een aardig eind op weg.
Wat?
Ik ben bezig met een applicatietje te maken die het volgende doet:
- het in de gaten houden van een bepaalde directory.
- zodra er op de printbutton geclickt wordt, moeten alle files IN die directory naar een bepaalde printer verzonden worden.
De files die in zo'n directory komen zijn VIPP files. Dat is een soort PostScript taal gemaakt door Xerox. Maar doet er denk ik verder niet toe. Wat doet zo'n VIPP file? Zodra die naar onze RIP wordt gestuurd wordt de inhoud van zo'n file niet gezien als een textfile maar als een mini postscript file, wat dus geparsed wordt door onze RIP.
Voorbeeld van een VIPP file:
Al deze inhoud wordt nu dus gewoon als plaintext gestuurd. Dit moet dus blijkbaar in een bepaald format gestuurd worden (ik denk postscript?) om netjes door de RIP geparsed te worden.
Vraag
Hoe kan ik zoiets aansturen? Dus niet als plaintext sturen, maar als Postscript versturen.
Ik gebruik de volgende code om te printen (gewoon een example geript ergens):
In een vorige applicatie van ons deden we dit op de volgende manier (dit weet ik, omdat ik de source nagelopen heb
)
Maar dit werkt om de een of andere vreemde manier niet meer.....
Als iemand weet hoe dit aan de praat te krijgen is, ben ik ook geholpen. Maar het liefste zou ik uiteraard helemaal vanuit vb.NET willen printen.
Dus, iemand een idee?
ps: sorry voor de layout
1st of all, ben een n00b op het gebied van vb.net. Maar goed, door zoeken, vallen en opstaan en proberen ben ik imho toch al een aardig eind op weg.
Wat?
Ik ben bezig met een applicatietje te maken die het volgende doet:
- het in de gaten houden van een bepaalde directory.
- zodra er op de printbutton geclickt wordt, moeten alle files IN die directory naar een bepaalde printer verzonden worden.
De files die in zo'n directory komen zijn VIPP files. Dat is een soort PostScript taal gemaakt door Xerox. Maar doet er denk ik verder niet toe. Wat doet zo'n VIPP file? Zodra die naar onze RIP wordt gestuurd wordt de inhoud van zo'n file niet gezien als een textfile maar als een mini postscript file, wat dus geparsed wordt door onze RIP.
Voorbeeld van een VIPP file:
code:
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
| %! XGF %%Title: mastertemplate.dbm MM SETUNIT PORT 98 68 SETPAGESIZE (//) 4 SETFTSW /mmo8 /Frutiger-Bold 8 INDEXFONT /mmo5 /Frutiger-Roman 5.5 INDEXFONT /mmo6 /Frutiger-Roman 6.5 INDEXFONT /gr /GREEN INDEXCOLOR /zw /BLACK INDEXCOLOR 0 68 MOVETO (backsnijtekens.tif) 1 0 ICALL mmo8 gr 48 54 MOVETO (Voornaam en AchterNaam) SHR 48 50.8 MOVETO gr () SHR mmo5 zw 50 54 MOVETO (functie) SHL 50 50.8 MOVETO () SHL mmo6 48 24 MOVETO 1.4 SETLSP (Bedrijf) SHR NL (PostBus) SHR NL (Woonplaats) SHR NL (The Netherlands) SHR 50 24 MOVETO 1.4 SETLSP (e) SHL NL (m) SHL NL (t) SHL NL (f) SHL NL (www.bedrijf.nl) SHL 53 24 MOVETO 1.4 SETLSP (voornaam@bedrijf.nl) SHL NL (+31 (0)6 12345678) SHL NL (+31 (0)20 111 111) SHL NL (+31 (0)20 111 222) SHL NL PAGEBRK %%EOF |
Al deze inhoud wordt nu dus gewoon als plaintext gestuurd. Dit moet dus blijkbaar in een bepaald format gestuurd worden (ik denk postscript?) om netjes door de RIP geparsed te worden.
Vraag
Hoe kan ik zoiets aansturen? Dus niet als plaintext sturen, maar als Postscript versturen.
Ik gebruik de volgende code om te printen (gewoon een example geript ergens):
Visual Basic:
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
| Private Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintButton.Click 'Dim pd As New PrintDocument Dim settings As New DataSet Dim PrinterNaam As String Dim file As String settings.ReadXml("instellingen.xml") Try streamToPrint = New StreamReader("c:\pdfconvert\test.dbf") Try printFont = New Font("Arial", 10) Dim pd As PrintDocument = New PrintDocument PrinterNaam = (settings.Tables("Instellingen").Rows(0)("printer")) pd.PrinterSettings.PrinterName = PrinterNaam AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage pd.Print() Finally streamToPrint.Close() End Try Catch ex As Exception MessageBox.Show("Er is iets fout gegaan met het printen! - " + ex.Message) End Try End Sub 'De Print Handler!!!!! '============================================== Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs) Dim lpp As Single = 0 Dim yPos As Single = 0 Dim count As Integer = 0 Dim leftMargin As Single = ev.MarginBounds.Left Dim topMargin As Single = ev.MarginBounds.Top Dim line As String lpp = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics) line = streamToPrint.ReadLine() While (count < lpp And line <> Nothing) yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)) ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, _ yPos, New StringFormat) count = count + 1 If (count < lpp) Then line = streamToPrint.ReadLine() End If End While If (line <> Nothing) Then ev.HasMorePages = True Else ev.HasMorePages = False End If End Sub |
In een vorige applicatie van ons deden we dit op de volgende manier (dit weet ik, omdat ik de source nagelopen heb
Visual Basic:
1
2
| Dim PrintActie PrintActie = Shell("cmd /C lpr.exe -S CSX2000 -J KlantBestelling -P SRA3DUP " & Bestand.Path & "\" & Bestand.FileName, vbHide) |
Maar dit werkt om de een of andere vreemde manier niet meer.....
Als iemand weet hoe dit aan de praat te krijgen is, ben ik ook geholpen. Maar het liefste zou ik uiteraard helemaal vanuit vb.NET willen printen.
Dus, iemand een idee?
ps: sorry voor de layout
[ Voor 3% gewijzigd door TeeDee op 24-01-2003 15:05 ]
Heart..pumps blood.Has nothing to do with emotion! Bored