Avatar billede teamdev Novice
19. juni 2002 - 08:20 Der er 19 kommentarer og
2 løsninger

Formatering af udskrift

Er det på nogen måde muligt at styre hvordan et dokument bliver udskrevet uafhængigt af printertype?

Altså sådan at ligegyldigt hvilken printer der er tilsluttet ser det der printes fra program helt ens ud

Avatar billede teamdev Novice
19. juni 2002 - 08:22 #1
Uafhængigt af printers marginer etc.
Avatar billede scb Praktikant
19. juni 2002 - 08:44 #2
Måske kan du bruge følgende:

Printer.ScaleMode = 6  'Mål i mm
Printer.Print ""
Printer.FontName = "Arial"
Printer.FontSize = 18
Printer.CurrentX = 35
Printer.CurrentY = 10
Printer.Print " Dette er en prøve "

Dette er en prøve vil blive printet 35 mm inde og 10 mm nede på papiret.
-SCB
Avatar billede dk_akj Nybegynder
19. juni 2002 - 09:06 #3
Teamdev - Jeg syntes bestemt du skrev at du selv havde fundet en løsning...

ref http://www.eksperten.dk/spm/224021

//akj
Avatar billede teamdev Novice
19. juni 2002 - 09:06 #4
Set det har jeg sådan set forsøgt!
Jeg har et fortrykt ark med nogle felter på. De samme felter har jeg i min form. Det hele skrives til printeren på denne måde:

Printer.CurrentX = HorizontalMargin + 1.2
Printer.CurrentY = VerticalMargin + 1.2
Printer.Print Index1.Text

Printer.CurrentX = HorizontalMargin + 3.5
Printer.CurrentY = VerticalMargin + 1.2
Printer.Print Index2.Text

Det sidder klokkerent på rette sted på arket, når jeg eksekverer det på min maskine, men kører jeg mit program på en anden maskine, med en anden printer rykker skidtet sig .

men måske er det på grund af at jeg forsøger at styre efter marginer, og de er jo forskellige fra printer til printer
Avatar billede teamdev Novice
19. juni 2002 - 09:06 #5
Akj >> Jeg skrev en slags løsning
Avatar billede teamdev Novice
19. juni 2002 - 09:07 #6
Akj >> Løsningen på at få det til at fungere på skærmen har jeg fundet, nu gælder det udskriften
Avatar billede dk_akj Nybegynder
19. juni 2002 - 09:09 #7
Ok , ang udskriften er vel bare en formnavn.print ??

Akj
Avatar billede teamdev Novice
19. juni 2002 - 09:30 #8
Jeg får udskriften helt fin når jeg printer lokalt på min printer. Al indhold sidder korrekt på det fortrykte ark.
Men tager jeg programmet og kører det på en anden computer med en anden printer, sidder det ikke længere korrekt. Det er det der er humlen i det
Avatar billede scb Praktikant
19. juni 2002 - 09:36 #9
Har du prøvet uden Margin og så i stedet med milimeter ?
-SCB
Avatar billede martin_moth Mester
19. juni 2002 - 13:04 #10
Så vidt jeg ved er CurrentX relativ til printmargin og IKKE parpirkant. Dvs. Printer.CurrentX = 0 placerer sig ved printmarginens kant og IKKE ved papirkanten. Så skifter man en til en printer med anden margin vil Printer.CurrentX = 0 placerer sig et andet sted i forhold til papirkanten, end den gjorde på den oprindelige printer...

Hvis man kunne aflæse hvor stor margin der er på den valgte printer, ville du få løst dit problem... Eller kunne angive koordinater relative til papirkanten...

Men måske tager jeg fejl :o)
Avatar billede teamdev Novice
19. juni 2002 - 14:31 #11
hmmm. Prøvede med millimeter og det var sjovt :-) Det eneste jeg fik ud af det var en masse tomme ark papir fra printeren
Avatar billede martin_moth Mester
19. juni 2002 - 14:57 #12
Så har du gjort noget forkert. Det her virker perfekt (fra scb):

  Printer.ScaleMode = 6  'Mål i mm
  Printer.FontName = "Arial"
  Printer.FontSize = 18
  Printer.CurrentX = 50
  Printer.CurrentY = 50
  Printer.Print " Dette er en prøve "

Men problemet er jo, hvorfra de 50 mm bliver målt - som jeg forstår det, måles de fra Printermargin. Dvs. teksten kommer til at stå 50 mm + den aktuelle printers margin fra papirkanten :o(

Og Printermargin er ikke ens på alle printere. Så derfor må du finde en måde at få defineret hvor langt du er fra papirets KANT og ikke printermargin - hvordan ved jeg ikke :o(
Avatar billede scb Praktikant
19. juni 2002 - 16:09 #13
Man kan hente oplysninger om den af brugeren valgt printer, bl.a hvilket fonte der er tilgænglig for den pågældende printer, jeg tror også at man kan hente hvad margen er sat til, og så er det jo til at regne på.
-SCB
Avatar billede teamdev Novice
20. juni 2002 - 08:19 #14
scb //  Det er jo lige hvad jeg har brug for. Men hvordan f..... henter man de oplysninger.

Jeg har forsøgt mig med at trække printer.scaleheight fra A4 formatet (29,7cm), men det giver mig "kun" totalen af top og bundmargin. Ja så kunne man jo dele med 2, men da man ikke kan regne med at top og bundmargin er ens er det ikke videre brugbart.

Jeg har også leget lidt med Printer.ScaleTop. Der kan jeg rykke rundt på udskriften, men jeg ved jo stadig ikke hvilken printer. Fik det dog til at virke på 2 forskellige specifikke printere. Tjekkede på Printer.DeviceName, i det ene tilfælde skulle Printer.ScaleTop være -0.5 og i det andet 0 men igen..... det er nok ikke det smarteste.

Så hvis du har en idé til hvordan man får værdien for printerens margin hentet er mere end velkommen til at smide det her :-)
Avatar billede martin_moth Mester
20. juni 2002 - 20:37 #15
Meget kreativt, det med (29,7 - scalehight) / 2. Men som sagt kan man ikke vide om det er rigtigt, hvis topmargin <> bundmargin.

Det eneste jeg kunne bidrage med her var at oplyse om, at du bliver nødt til at kende størrelsen på margin, eller finde en måde at måle fra papirkant. HVORDAN ved jeg ikke. Jeg skriver kun dette indlæg, så du kan se, at det ikke er fordi jeg har glemt dig, men fordi jeg ikke kan hjælpe mere :o(  Meeeeen mon ikke nogle andre kan? Good luck!
Avatar billede teamdev Novice
25. juni 2002 - 09:07 #16
Hmmm. Tror desværre man er nødt til at kende den specifikke printer der skal skrives til, eller ihvertfald printertypen, hvis alle bare havde en HP ville det virke, meeeeen....

Jeg vil dele points ligeligt mellem jer som tak for inputs

//Martin kan du ikke smide et svar så du også kan få nogle point.
Avatar billede scb Praktikant
25. juni 2002 - 09:20 #17
Man skulle selv kunne sætte nye margner ved hjælp af:
Printer.Scaleleft = xxx
Printer.Scaletop = xxx
Måske det kan bruges.
-SCB
Avatar billede scb Praktikant
25. juni 2002 - 09:23 #18
UPS det havde du vist prøvet.
Avatar billede teamdev Novice
25. juni 2002 - 09:26 #19
Netop :-)
Avatar billede martin_moth Mester
25. juni 2002 - 09:32 #20
Her er så et svar  irreterende, at der ikke blev fundet en løsning, for jeg kunne selv godt bruge den...
Avatar billede teamdev Novice
25. juni 2002 - 09:40 #21
Jeg smider en kommentar hvis jeg skulle falde over en løsning :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester