mal ne Frage, hatte vor ca. 10 Jahren ne Scriptsprache mit es möglich war, durch Eingabe von Left und Top Koordinaten Punktgenaues Drucken zu ermöglichen. Weiss aber nicht mehr welches Programm das war.
Ist mit AutoIt auch sowas möglich.
mal ne Frage, hatte vor ca. 10 Jahren ne Scriptsprache mit es möglich war, durch Eingabe von Left und Top Koordinaten Punktgenaues Drucken zu ermöglichen. Weiss aber nicht mehr welches Programm das war.
Ist mit AutoIt auch sowas möglich.
Das ging problemlos, z.B. mit dBase, als die Welt noch aus 80 Spalten und 25 Zeilen bestand und keine TrueType-Fonts verwendet wurden.
Heutzutage ist der Druckvorgang nicht mehr so easy. Ein direkter, platzierter Druck in der Form _print(Startpixel_X, Startpixel_Y) ist per AutoIt nicht machbar. Du kannst aber z.B. über den Weg eines html-Dokuments den Ausdruck gestalten. Schau mal bei den Skripten unter Galenda, dort wurde das umgesetzt.
Ich bin auch gerade dabei eine kleine UDF zu schreiben mit der man dann LaTeX Dokumente erstellen und ausdrucken / in PDF umwandeln kann. Dauert aber noch
ShellExecute("latex file.tex")
ShellExecute("latex file.tex")
ShellExecute("file.pdf", "","print")
?
Johannes
Danke für die Antworten, werde mich mal damit beschäftigen.
oder aber du erstellst Dir eine pdf-Datei, da kannst Du pixelgenau drucken ...
#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("PDF-Creator",500,520)
GUICtrlCreateGroup("Seitenformat",10,30,170,70)
GUICtrlCreateGroup("Rand (mm)",190,30,105,70)
GUICtrlCreateGroup("Schriftformat",315,30,175,70)
GUICtrlCreateRadio("Querformat",20,70)
GUICtrlCreateLabel("Autor:",10,475,100,20)
GUICtrlCreateLabel("Titel:",120,475,100,20)
GUICtrlCreateLabel("links:",200,50,30,20)
GUICtrlCreateLabel("oben:",200,75,30,20)
$Start = GUICtrlCreateButton("erzeuge PDF",370,480,120,30)
GUICtrlSetFont(-1,11,600)
$Autor = GUICtrlCreateInput("",10,490,100,20)
$Titel = GUICtrlCreateInput("",120,490,100,20)
$Text = GUICtrlCreateEdit("Bitte geben sie hier Ihren Text ein.",10,120,480,345)
$Schrift = GUICtrlCreateCombo("8",325,48,45,20)
GUICtrlSetData(-1,"9|10|11|12|14|16|18|20|22|24|26|28|36|48|72","12")
$Schriftart = GUICtrlCreateCombo("Times-Roman",380,48,100,20)
GUICtrlSetData(-1,"Helvetica|Courier","Times-Roman")
$Size = GUICtrlCreateCombo("A4",110,60,50,20)
GUICtrlSetData(-1,"A3","A4")
$Format = GUICtrlCreateRadio("Hochformat",20,50)
GUICtrlSetState(-1,$GUI_CHECKED)
$Rand_y = GUICtrlCreateInput("24",240,48,45,20)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1,999,0)
$Rand_x = GUICtrlCreateInput("25",240,72,45,20)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1,999,0)
$Fett = GUICtrlCreateCheckbox("Fett",325,73,35,20)
$Kursiv = GUICtrlCreateCheckbox("Kursiv",370,73,60,20)
GUISetState ()
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
If $msg = $Start Then ExitLoop
WEnd
$Pfad = FileSaveDialog("Speichern",@DesktopDir,"PDF (*.pdf)",16)
If StringRight($Pfad,4) = ".pdf" Then
Else
$Pfad = $Pfad & ".pdf"
EndIf
$Fett = GUICtrlRead($Fett)
$Kursiv = GUICtrlRead($Kursiv)
$Schriftart = GUICtrlRead($Schriftart)
$Rand_x = GUICtrlRead($Rand_x)
$Rand_y = GUICtrlRead($Rand_y)
$Format = GUICtrlRead($Format)
$Autor = GUICtrlRead($Autor)
$Titel = GUICtrlRead($Titel)
$Size = GUICtrlRead($Size)
$Text = GUICtrlRead($Text)
$Schrift = GUICtrlRead($Schrift)
FileDelete($Pfad)
$File = FileOpen($Pfad, 1)
$Zeilen = 1
If $Size = "A4" Then
$Size_x = 210
$Size_y = 297
ElseIf $Size = "A3" Then
$Size_x = 297
$Size_y = 420
EndIf
If $Fett = $GUI_CHECKED Or $Kursiv = $GUI_CHECKED Then
If $Schriftart = "Times-Roman" Then
If $Fett = $GUI_CHECKED Then
$Schriftart = "Times-Bold"
ElseIf $Kursiv = $GUI_CHECKED Then
$Schriftart = "Times-Italic"
EndIf
If $Fett = $GUI_CHECKED And $Kursiv = $GUI_CHECKED Then $Schriftart = "Times-BoldItalic"
ElseIf $Schriftart = "Helvetica" Then
If $Fett = $GUI_CHECKED Then
$Schriftart = "Helvetica-Bold"
ElseIf $Kursiv = $GUI_CHECKED Then
$Schriftart = "Helvetica-Oblique"
EndIf
If $Fett = $GUI_CHECKED And $Kursiv = $GUI_CHECKED Then $Schriftart = "Helvetica-BoldOblique"
Else
If $Fett = $GUI_CHECKED Then
$Schriftart = "Courier-Bold"
ElseIf $Kursiv = $GUI_CHECKED Then
$Schriftart = "Courier-Oblique"
EndIf
If $Fett = $GUI_CHECKED And $Kursiv = $GUI_CHECKED Then $Schriftart = "Courier-BoldOblique"
EndIf
EndIf
If $Format = $GUI_UNCHECKED Then
$Size = $Size_x
$Size_x = $Size_y
$Size_y = $Size
EndIf
If $Schrift = 8 Then
$Abstand = 9
ElseIf $Schrift = 9 Then
$Abstand = 11
ElseIf $Schrift = 10 Then
$Abstand = 12
ElseIf $Schrift = 11 Then
$Abstand = 13
ElseIf $Schrift = 12 Then
$Abstand = 15
ElseIf $Schrift = 14 Then
$Abstand = 17
ElseIf $Schrift = 16 Then
$Abstand = 19
ElseIf $Schrift = 18 Then
$Abstand = 21
ElseIf $Schrift = 20 Then
$Abstand = 24
ElseIf $Schrift = 22 Then
$Abstand = 26
ElseIf $Schrift = 24 Then
$Abstand = 28
ElseIf $Schrift = 26 Then
$Abstand = 30
ElseIf $Schrift = 28 Then
$Abstand = 32
ElseIf $Schrift = 36 Then
$Abstand = 41
ElseIf $Schrift = 48 Then
$Abstand = 55
Else
$Abstand = 83
EndIf
If Not StringInStr($Text,@CRLF) = 0 Then
$Text = StringSplit($Text,@CRLF)
$Zeilen = $Text[0] / 2 + 1
EndIf
; Umrechnung
$Wert = 2.834175
$Size_y = Round($Size_y * $Wert)
$Size_x = Round($Size_x * $Wert)
$Rand_x = Round($Rand_x * $Wert)
$Rand_y = Round($Rand_y * $Wert)
FileWriteLine($File,"%PDF-1.2")
FileWriteLine($File,"%âãÏÓ")
FileWriteLine($File,"1 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Author ("&$Autor&")")
FileWriteLine($File,"/CreationDate (D:"&@YEAR&@MON&@MDAY&@HOUR&@MIN&@SEC&")")
FileWriteLine($File,"/Creator (Ahnungslos)")
FileWriteLine($File,"/Producer (Ahnungslos)")
FileWriteLine($File,"/Title ("&$Titel&")")
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"4 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Type /Font")
FileWriteLine($File,"/Subtype /Type1")
FileWriteLine($File,"/Name /F1")
FileWriteLine($File,"/Encoding 5 0 R")
FileWriteLine($File,"/BaseFont /"&$Schriftart)
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"5 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Type /Encoding")
FileWriteLine($File,"/BaseEncoding /WinAnsiEncoding")
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"6 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File," /Font << /F1 4 0 R >>")
FileWriteLine($File," /ProcSet [ /PDF /Text ]")
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"7 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Type /Page")
FileWriteLine($File,"/Parent 3 0 R")
FileWriteLine($File,"/Resources 6 0 R")
FileWriteLine($File,"/Contents 8 0 R")
FileWriteLine($File,"/Rotate 0")
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"8 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Length 9 0 R")
FileWriteLine($File,">>")
FileWriteLine($File,"stream")
FileWriteLine($File,"BT")
If $Zeilen = 1 Then
FileWriteLine($File,"/F1 "&$Schrift&" Tf")
FileWriteLine($File,"1 0 0 1 "&$Rand_y&" "&$Size_y - $Rand_x - $Abstand&" Tm")
FileWriteLine($File,"(Dies ist mein erster Text, und ich weiß gar nicht, was ich machen soll...) Tj")
Else
For $Counter = 1 To $Zeilen
FileWriteLine($File,"/F1 "&$Schrift&" Tf")
FileWriteLine($File,"1 0 0 1 "&$Rand_y&" "&$Size_y - $Rand_x - $Abstand * $Counter&" Tm")
FileWriteLine($File,"("&$Text[$Counter * 2 - 1]&") Tj")
Next
EndIf
FileWriteLine($File,"ET")
FileWriteLine($File,"endstream")
FileWriteLine($File,"endobj")
FileWriteLine($File,"9 0 obj")
FileWriteLine($File,"78")
FileWriteLine($File,"endobj")
FileWriteLine($File,"2 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Type /Catalog")
FileWriteLine($File,"/Pages 3 0 R")
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"3 0 obj")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Type /Pages")
FileWriteLine($File,"/Count 1")
FileWriteLine($File,"/MediaBox [ 0 0 "&$Size_x&" "&$Size_y&" ]")
FileWriteLine($File,"/Kids [ 7 0 R ]")
FileWriteLine($File,">>")
FileWriteLine($File,"endobj")
FileWriteLine($File,"0 10")
FileWriteLine($File,"0000000000 65535 f ")
FileWriteLine($File,"0000000013 00000 n ")
FileWriteLine($File,"0000000591 00000 n ")
FileWriteLine($File,"0000000634 00000 n ")
FileWriteLine($File,"0000000156 00000 n ")
FileWriteLine($File,"0000000245 00000 n ")
FileWriteLine($File,"0000000307 00000 n ")
FileWriteLine($File,"0000000372 00000 n ")
FileWriteLine($File,"0000000453 00000 n ")
FileWriteLine($File,"0000000576 00000 n ")
FileWriteLine($File,"trailer")
FileWriteLine($File,"<<")
FileWriteLine($File,"/Size 10")
FileWriteLine($File,"/Root 2 0 R")
FileWriteLine($File,"/Info 1 0 R")
FileWriteLine($File,">>")
FileWriteLine($File,"startxref")
FileWriteLine($File,"712")
FileWriteLine($File,"%%EOF")
FileClose($File)
[/autoit]hilft Dir das weiter?
Es ist nicht unbedingt eine weitere DLL nötig. Windows bringt doch schon alles mit. Ein Beispiel hab ich hier mit drin:
http://progandy.co.cc/downloads?task=view.download&cid=3