You are not logged in.
Pages: 1
I am confused, or doing somthing wrong, or not understanding somthing.
I use the following code in the start of my Printer program
pdfDoc := TPdfDocumentGDI.Create;
pdfDoc.Info.Author:='';
pdfDoc.Info.Creator:='';
pdfDoc.DefaultPaperSize:=psA4;
pdfDoc.CompressionMethod:=cmFlateDecode;
pdfDoc.ScreenLogPixels := 600; // I assume this is in pixels per inch
pdfPage := pdfDoc.AddPage;
pdfDoc.VCLCanvas.Pen.Width:=1;
pdfDoc.VCLCanvas.font.name := 'Arial';
pdfDoc.VCLCanvas.font.height := round(10 * (pdfDoc.ScreenLogPixels / 72)) ; //10pnt
chwidth := pdfDoc.VCLCanvas.textwidth('n'); //= 0.676 pixels
chheight := pdfDoc.VCLCanvas.textheight('n'); //= 1.27e-311 pixels
My printer program relies heavily on sizeing text for things like wordwrap, grid layout, page positioning. Can anybody tell me how I can obtain the true width of some text in pixels (or points or em's or anything!)
Thanks in advance
Geoff
Offline
I suspect that in order to set a font to 10 points, you'd need to call either Font.Size := 10
Font.Height is the size in pixels.
Just as with any other VCL font.
See http://docs.embarcadero.com/products/ra … _Size.html
Offline
I have actually tried both ways thus:
pdfDoc.VCLCanvas.font.size := 10;
since the VCL font Size property is in pnts. I've also tried
pdfDoc.VCLCanvas.font.size := round(10 * (pdfDoc.ScreenLogPixels / 72))
incase the there is an error and the size were loading in pixels. I've also tried assigning a standart TFont, but however I set the font size the responce to
chwidth := pdfDoc.VCLCanvas.textwidth('n'); //= 2.64e-308
is always the same. (Yesterday the value was 0.67, but having reloaded Delphi the result today is always 2.64e-308. and this applies for all letters and letter strings. eg 'n' 'm' 'nn' 'i' 'abcedfghijklmnopqrstuvwxyz')
Textwidth is also a property of pdfDoc, but trying to access this results in an AV though I can't see why. It should just return a value of 0. (ie the only line is Result := 0 ).
Textwidth() is used extensively in SynPDF (as might be expected) so I guess it works, thus my only conclusion is that I am not setting somthing up correctly.
Can anybody tell me what I am doing wrong, or give me another way of accessing the text width please.
Thanks in advance,
Geoff
Offline
Did you try to set UseSetTextJustification = false as stated by http://synopse.info/forum/viewtopic.php?pid=1839#p1839 ?
See also http://synopse.info/forum/viewtopic.php?pid=1909#p1909
Offline
I had read thriough the second reference but not the first. I will try that tomorrow. THANKS
Geoff
Offline
Pages: 1