Avatar billede mcbyte Nybegynder
21. februar 2005 - 01:43 Der er 5 kommentarer

Non-system fonte til PrintDocument

Godaften

Jeg står og skal bruge en udskriftsfunktion til et program, og har implementeret denne - men med ét problem.

I fald at jeg ønsker at udskrive tekst med en skrifttype som ikke er installeret i systemet, så udskiftes denne blot med "MS Sans Serif"

Kan dette være en begrænsning i PrintDocument klassen, eller er det blot en fejl fra min side?

Del af udskriftsmetoden:

-----------------------------------------------------
// Printing the font name
e.Graphics.DrawString(
    "sdf",
    verdana,
    Brushes.Black,
    new Rectangle((int) leftMargin, (int) yPosition, e.MarginBounds.Width, (int) Math.Ceiling(printFont.GetHeight(e.Graphics))),
    new StringFormat());

// New line
yPosition += verdana.GetHeight(e.Graphics);

// Set maximum layout size.
SizeF layoutSize = new SizeF(e.MarginBounds.Width, e.MarginBounds.Height);

// Measure string.
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(
    _DrawString,
    printFont,
    layoutSize,
    new StringFormat());

// Draw string withing measured box
e.Graphics.DrawString(
    _DrawString,
    printFont,
    Brushes.Black,
    new Rectangle((int) leftMargin, (int) yPosition, (int) Math.Ceiling(stringSize.Width), (int) Math.Ceiling(stringSize.Height)),
    new StringFormat());

// New line
yPosition += stringSize.Height;

-----------------------------------------------------


Selve Font objekterne bliver lavet via en PrivateFontCollection og AddFontFile - og kan vises korrekt i andre dele af programmet.

Nogle forslag?

Med venlig hilsen
Thomas René Sidor
Avatar billede burningice Nybegynder
21. februar 2005 - 09:36 #1
mig bekendt kan man kun printe med systemfonte (dem der er installerede), og det gælder også for andre programmer i windows.
Avatar billede mcbyte Nybegynder
21. februar 2005 - 10:08 #2
Det er desværre også hvad jeg umiddelbart tror, men har endnu ikke kunnet finde noget fast bevis på det. Ville være rart hvis der stod noget konkret om det på msdn...
Avatar billede burningice Nybegynder
21. februar 2005 - 11:30 #3
hmm... ved ikke om det er helt det samme, men her er der et lille eksempel på det med printe ikke installerede fonte

http://office.microsoft.com/en-us/assistance/HP052589991033.aspx

på den anden side er der programmer som dette som vist kan en hel del med fonte. Kan være det bare er en begrænsning i .Net's håndtering med fonte. Den er trods alt ikke alt for god.
Avatar billede mcbyte Nybegynder
21. februar 2005 - 12:30 #4
Well, det siger jo ikke direkte noget om .NET's og PrintDocument's egenskaber for non-system fonte. Alt det juridiske bag det kender jeg - men det undrer mig blot at man sagtens kan vise fontene korrekt på anden vis, men ikke udskrive dem.
Avatar billede burningice Nybegynder
21. februar 2005 - 15:23 #5
hov... glemte at komme med link på det andet program jeg snakkede om

http://www.sharewareconnection.com/serious-font-collector.htm

kan være du skal i gang med noget Win32 Font API'er ;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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