Bild drucken

  • Hi :)
    Ich meld mich nach einiger Zeit auch mal wieder zu Worte und habe ein Problem...
    Wie schaffe ich es mit Autoit ein Bild zu drucken?
    Das ganze muss ich Originalgröße gedruckt werden. Also nicht verkleinert oder sonst was. Am liebsten noch mit so einer Dialog Box wo man den Drucker auswählen kann etc.

    Im englischen Forum hab ich folgendes gefunden:

    [autoit]

    $sPrintFile = @ScriptDir & "\tempcover.jpg"
    Run('Rundll32.exe "' & @SystemDir & '\mshtml.dll",PrintHTML "' & $sPrintFile & '"', @SystemDir)

    [/autoit]


    Geht wunderbar, leider verkleinert der mein Bild.

    Gibt es sonst noch eine Möglichkeit ein Bild zu drucken? Von mir aus auch mit DLLs etc. aber möglichst ohne Zusatzprogramme die man erst installieren muss.

    Vielen Dank schonmal
    Carsten

  • Hmm, was meinst du mit Originalgröße?
    Und zum Drucken, nimm am besten die GDI / Print-UDF von hier: http://progandy.de.tt/PHPCVS/AutoIT/GDI_UDF/ (wird zur Zeit noch weiterentwickelt, wenn wir Zeit haben :) )
    Du brauchst die Dateien:
    [ ] GDI.au3
    [ ] GDIConstants.au3
    [ ] GDIPrint.au3
    [ ] GDIStructures.au3
    [ ] Macros.au3
    [ ] PrintConstants.au3
    [ ] PrintDemo.au3 --> Demo zum Drucken ;)
    [ ] PrintDialog.au3
    [ ] PrintUDF.au3
    [ ] Winspool.au3

  • naja wenn ich, sagen wir mal, mit photoshop ein bild drucke. Druckt er mir das Ding genau so groß wie ich es ihm eingeb (also z.B. 20 cm breit, 10 cm lang). Ich hab jetzt ne func gefunden, womit ich Bilder auf eine bestimmte größe schrumpfen kann (hab voher alles von cm in pixel umgerechnet). Und genau so groß soll ers eben drucken xD

  • Hmm, ja :) muss nur noch auf die Seite passen ...
    Also: benötigte Pixel rausfinden mit
    $PixelPerInchX = _WinAPI_GetDeviceCaps(DruckDC,LOGPIXELSX)
    $PixelPerInchY = _WinAPI_GetDeviceCaps(DruckDC,LOGPIXELSY)
    und dann cm in inch und damit die Pixel für den resize.

  • Ja. Die Formel zum umrechnen ist schon im Skript (hoffe ich habs richtig ^^):
    $cm * $dpi / 2.54

    $cm sind die cm die ich beim Drucken will
    $dpi sind die DPI die das Ursprüngliche Bild hat

    Das ganze jeweils für Breite und Höhe. Dann wird das Bild mit dem Errechneten verkleinert / vergrößert.

    PS: gz zu deinem Mod-Titel ^^


    Edit: Oder meinst du die DPI die der Drucker für das gedruckte verwendet? (hä? ^^)

  • Genau, die DPI, die der Drucker zum Drucken verwendet, sind wichtig :)
    Es ist egal, welche dpi das Bild vorher hat.
    Du musst folgendes machen:
    ( 1) $pxX = Bildbreite in Pixel, $pxY = Bildhöhe in Pixel )
    2) DPI vom Drucker holen: $DruckdpiX, $DruckdpiY
    3) $cmX, $cmY festlegen
    4) die Pixel für den Druck ausrechen:
    $DruckPixelX = $cmX * $DruckdpiX / 2.54
    $DruckPixelY = $cmY * $DruckdpiY / 2.54
    und dann ein StretchBlt von BildDC auf DruckDC