Hej, Hej!Utskrift
Jag utvecklar i VB.
Jag ska göra en utskrift på PostGirots inbetalningsmall. Vad bör jag använda för utskrift? Det behöver ju vara exakt... Och det skall ju fungera på flera olika skrivare. Kan man styra i koden så marginalerna är exakt lika på olika skrivare?Sv: Utskrift
Nej. Texten kommer inte tillräckligt exakt på olika skrivare. Behöver kunna justera texten både horizontalt och vertikalt för varje skrivare om man skall uppfylla Postgirots krav (klara mallen).
Jag gjorde enligt nedan i C#:
<code>
//C# kod
//Utdrag ur kod:
private void PrintOCR()
{
// Font ocrFont = new Font("Ocrb", fontstorlek);//Skall normalt vara '11'
string OCR_Rad;
//Fyller ut med '£' i stället för blanktecken för att testa.
OCR_Rad = new String('£', 20 - utskrift[OCRNR].Length) + utskrift[OCRNR] + "£#" + new String('£', 8 - utskrift[ATTBETALA].Length) + utskrift[ATTBETALA] + "£00£££" + knr + "£>" + new String('£', 17) + "8169021";// +"£#";
//Remmar denna rad vid test så att man ser antal blanktecken
OCR_Rad = OCR_Rad.Replace("£", " ");
if (chkWriteGamf.Checked == false)
{
//Tar bort test-tecken
OCR_Rad = OCR_Rad.Replace("#", " ");
OCR_Rad = OCR_Rad.Replace(">", " ");
}
SizeF sf = e.Graphics.MeasureString(OCR_Rad, ocrFont);
//Kan juster placeringen horizontalt med en slider som heter nrcJustHoriz
x = 21.9635315f + (float.Parse(nrcJustHoriz.Value.ToString()) / 10);
//Kan justera placeringen vertikalt med en slider som heter nrcJustVert
y = 274f + 4.074239f - sf.Height + (float.Parse(nrcJustVert.Value.ToString()) / 10);
float fontbredd = 188f / 74f;
//Funktion som skriver ut tecken för tecken...
myWriteString(OCR_Rad, ocrFont, x, y, fontbredd, e);
}
private void myWriteString(string OCR_Rad, Font ocrFont, float x, float y, float bt, System.Drawing.Printing.PrintPageEventArgs e)
{
//Skriver ut tecken för tecken för att kunna styra längden mellan teckena exakt.
float myX = x;
for (int i = 0; i < OCR_Rad.Length; i++)
{
e.Graphics.DrawString(OCR_Rad.Substring(i, 1), ocrFont, Brushes.Black, myX, y);
myX += bt;
}
}
</code>