2009-11-12 9 views
2

C#에서 PDFsharp를 사용하여 수동으로 PDF를 생성하는 프로그램이 있습니다. 오히려 지겨운 일이긴하지만, 나는 그것을 사용해야 만하고 작업의 완성에 가까워지고 있습니다. 하나의 문제 만 남아 있습니다.다양한 Arial 글꼴 크기의 픽셀 단위로 글자 너비를 찾습니다.

문제점 : 주어진 글꼴의 너비가 Arial에서 주어진 글꼴 크기의 너비를 어떻게 알 수 있는지 궁금합니다.

더 정확한 텍스트 배치 방법을 고민 중입니다. 지금은 픽셀 단위로 상자 너비를 정의한 다음 해당 상자에 문자열을 쓰려고합니다. 나는 상자에 들어갈 수있는 문자열의 최대 길이를 추측하고 때로는 약간의 시각적 인 이상 함이 있습니다.

어떤 도움이 필요합니까?

덕분에

답변

4

커닝 등이있는 트루 타입 글꼴이있는 날에는 한 문자 너비가 없습니다. "VA"문자열의 너비는 아마도 "V"와 "A"문자열의 너비 합계보다 적을 것입니다. 개별 문자가 시작 지점 인 경우 너비를 합산해야하지만 마지막으로 전체 문자열을 측정해야합니다.

PDFsharp에는이 줄 바꿈을 수행하는 XTextFormatter (전체 소스 코드 사용) 클래스가 포함되어 있습니다. 특정 요구 사항에 맞게 조정할 수 있습니다. gfx.MeasureString(token, this.font).Width을 사용하여 문자열의 너비를 측정합니다.

6

난 당신이 특별히 PDF 번호, 아니면 그냥 일반적인 방법을 사용하여 문자열의 크기를 측정하는 방법을 할 것인지 질문에서 모르겠어요. 이 Width=12, Height=2를 포함하는 Size 인스턴스를 반환합니다

TextRenderer.MeasureText("some text", new Font("Arial", 1.0f, FontStyle.Regular)) 

:

은 일반적으로 닷넷, 당신은 (윈도우 형태의)을 TextRenderer 클래스의 MeasureText 방법을 사용할 수 있습니다.

1

XGraphics.MeasureString (string s, Font f)이 트릭을 수행합니다.

//l_Page is of type PdfPage 

    var l_Graphics = XGraphics.FromPdfPage(l_Page); 
    var l_TitleFont = new Font("Arial", 15f, GraphicsUnit.World) 
    var l_Title = "Hallo Welt"; 
    //l_TitleSize will be of type XSize and has properties for Width and Height 
    var l_TitleSize = l_Graphics.MeasureString(l_Title, l_TitleFont); 
관련 문제