1. #1

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0

    PHP: Printerfuncties onder windows

    Hoort eigenlijk meer thuis bij progging omdat het nu eens niets met webdev te maken heeft, maar hier zitten meer mensen die met php bezig zijn .

    Ik heb atm een applicatie die een pak zaken moet afdrukken (rangschikkingen voornamelijk).

    Nu had ik een volledige print-out geschreven, imet volgende stappen:
    PHP Code:
    selecteerPrinter;
    openPrinter;
    selecteerFont;
    startDocument;

    //Output (in loop desnoods
    startPagina;
    output dmv drawText drawLine fies
    sluitPagina
    ;
    // Einde output
    stopDocument;
    verwijderFont;
    sluitPrinter
    Lokale testen verloopten perfect, alles werd mooi afgedrukt.
    Nu kwam ik ergens anders aan, andere printer, drukt die die zaken 2x zo klein af. Op nog een andere printer daar weer 2x zo klein, maar wel exact zelfde grootte als op die eerdere waar het misliep. Geen enkele van de printers stond scaled of zo .

    Nu vroeg ik me af: is er hier een optie of zo die ik over het hoofd zie of zijn die font-groottes die je in php selecteert puur printer afhankelijk?

    Hopelijk weet er hier toch iemand het antwoord .

    edit: en ik wil geen gezever van PHP dient niet voor te printen, ik had geen tijd (en geen ide) om het in c++ te maken tot nu. Als ik het niet vind ga ik het alsnog zo doen, maar het zou iets leuker zijn moest ik nu gewoon de php oplossing krijgen , gezien dat wrsch 10s werk is itt alles gaan herschrijven in c++.
    no votes  

  2. #2
    passero's Avatar
    Registered
    28/11/03
    Location
    Drongen
    Posts
    6,665
    iTrader
    5 (100%)
    Mentioned
    0 Post(s)
    Reputation
    6/28
    het is niet direct een oplossing hiervoor maar... kan je niet een pdf maken on the fly en die afdrukken? dan ben je zeker dat het op elke printer gelijk is.
    Wij doen dat hier toch zo (is wel niet vanuit php ma bon, princiepe telt)

    Misschien ondersteunen de printers bepaalde commando's niet waardoor de font niet correct gezet wordt. Dit kan mss ook een oorzaak zijn. Beide printers waar het probleem zich voordoet, zijn dat printers van hetzelfde merk of andere? Eens de verschillen zoeken bij u thuis en bij de andere printers
    no votes  

  3. #3

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by passero View Post
    This quote is hidden because you are ignoring this member. Show
    het is niet direct een oplossing hiervoor maar... kan je niet een pdf maken on the fly en die afdrukken? dan ben je zeker dat het op elke printer gelijk is.
    Wij doen dat hier toch zo (is wel niet vanuit php ma bon, princiepe telt)

    Misschien ondersteunen de printers bepaalde commando's niet waardoor de font niet correct gezet wordt. Dit kan mss ook een oorzaak zijn. Beide printers waar het probleem zich voordoet, zijn dat printers van hetzelfde merk of andere? Eens de verschillen zoeken bij u thuis en bij de andere printers
    Het waren allemaal HP's.

    Nuja, ik snap het gewoon al niet goed omdat de php functies uiteindelijk gewoon wraps zijn van functies uit de winapi, waarvan ik weet dat ze wel perfect zouden moeten werken.

    Strx nog eens op verderzoeken ze.

    edit: en zoiets was mijn plan ze moest ik het niet werkend krijgen, formatted output al maken (nu niet in pdf) en dat doorgeven aan een c++ printer app . Maar soit, eerst nog even zoeken op die php-stuff.

    edit 2: hah, PHP werkt dus blijkbaar met pixel of raster-based units (die dus kunnen verschillen per printer) ipv met logical units of zo. Oplossing die ik gebruikt heb: kies een referentieprinter om op te testen.
    Zoek een optimale height/width voor je font en doe dan dit:

    $height= $height*printer_logical_fontheight($handle,10)/$factor;

    $factor is in dit geval de printer_logical_fontheight($handle,10) van die referentieprinter (in mijn geval 42).

    Hopelijk is iemand er iets mee, maar ik raad toch aan een c++ compiler of zo bij de hand te hebben en dit in c++ te schrijven .
    Last edited by killgore; 01-08-2007 at 16:32.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in