2014-09-19 6 views
2

이 문제는 잘 알려져 있지만 아직 해결 방법을 찾지 못했습니다.Windows 글꼴 크기 설정을 사용하여 보고서를 잘못 표시하거나 인쇄하는 빠른 보고서는 다음과 같습니다. (125 %, 150 %) 또는 dpi가 96 (120,144)보다 큰 경우

창에서 FON 크기가 정상 크기

보고서 용지 크기를 기준으로 축소 한 후 이상으로 설정 될 때마다

,

등 같은 페이지 왼쪽 상단에 고정됩니다 : 이 영향을주지 않습니다 떨어져 어디에서 "확장"속성을 Swiching 또는

Image1

.

PixelsPerInch를 망친 것처럼.

바로 여기이 링크에서 실제로 무언가를 내가 본 그에서 제공하는 유일한 솔루션,

및 퀵 리포트 포럼에서 찾을 수 있습니다 :

QrPreview with UseDpiScaling under Windows7,

가 만드는 작업이 포함됩니다 새 프로젝트 매니페스트 리소스로 다음 줄을 추가합니다.

<application xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <windowsSettings> 
     <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> 
    </windowsSettings> 
    </application> 
</assembly> 

그러나 이것이 유일한 작업은 mak 보고서는 같은 boundries 내에서 유지하면서 아래 그림과 같이, 보고서 큰에서

를 텍스트를 전자 :

Image2

은 그것에 대해 무엇을 할 수 있는가?

내가 용지의 크기에 맞게 보고서를 필요

,

+0

실제로 모든 VCL에는 이러한 DPI 설정으로 올바르게 확장되는 문제가 있습니다. 이 변경 될 때 Microsoft 소프트웨어 자체가 무섭게 보인 것을 보았습니다. 고객이 가장 자주 제기하는 불만 사항 중 하나입니다. 항상 설정은 항상 100 %이어야하며 Microsoft는이 옵션을 처음부터 사용할 수 있도록 설정해서는 안됩니다. –

+0

QR 및 큰 글꼴에는 문제가 없습니다. 프린터 글꼴이 화면 글꼴과 아무 관련이 없기 때문입니다. QR은 화면에 표시되는 메타 파일에 인쇄 미리보기를 보내지 만, Delphi 및 Windows 7을 사용하여 다양한 응용 프로그램, 보고서 및 도구를 사용하여 Windows 화면 글꼴 크기로 디자인, 미리보기 또는 인쇄하는 데 어려움을 겪지 않았습니다. 20 개 이상의 응용 프로그램과 약 1000 개의 보고서에서 다양한 글꼴, DPI 및 화면 해상도 설정을 사용하는 50 명의 사용자. –

+0

@Jerry 글꼴 스케일링은 픽셀 밀도가 높은 화면에서 필수적입니다. 이것들은 이제 일반적입니다. 올바르게하기가 어렵지 않습니다. –

답변

0

내가 작업 솔루션을 발견 표시하고 윈도우 글꼴 크기에 관계없이,이 디자인 된 동일한 방식으로 인쇄합니다! QRPrntr.pas 용 패치 :

procedure TQRPrinter.CreateMetafileCanvas; 

    function scaleToNativeDeskRes(pVal: Integer): Integer; 
    var 
    tTemp: HDC; 
    begin 
    tTemp := GetDC(0); 
    try 
     Result := Round((pVal * GetDeviceCaps(tTemp, VERTRES))/GetDeviceCaps(tTemp, DESKTOPVERTRES)); 
    finally 
     ReleaseDC(0, tTemp); 
    end; 
    end; 

begin 
... 
    FMetafile.Width := scaleToNativeDeskRes(XSize(PaperWidthValue)); 
    FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue)); 
    FCanvas := TMetafileCanvas.Create(FMetafile, 0); 
    FCanvas.Font.PixelsPerInch := MetafileDPI; 
... 
end;