2009-04-09 4 views
0

PrintDocument를 사용하여 DataGridView를 인쇄하려고합니다. 내 PrintPage 이벤트 핸들러에서 e.Graphics 객체를 사용하여 그리드 선을 그린 다음 "셀"에 일부 텍스트를 인쇄합니다. 제쳐두고, 이것은 Microsoft에서 수행 한 것이어야합니다.변환을 사용할 때 내 인쇄물이 인쇄 미리보기처럼 보이지 않습니다.

어쨌든, 이것은 정상적으로 작동합니다. PrintDocument는 PrintPreviewDialog에 묶여 있으며, 이것을 열면 DGV가 올바르게 렌더링됩니다. 사용자는 미리보기 대화 상자의 인쇄 버튼을 클릭하여 인쇄물을 얻을 수 있습니다. 내 문제는 때때로 DGV가 페이지에 비해 너무 넓기 때문에 수평으로 만 맞춰서 크기를 조정할 수 있기를 바랍니다. 내가 실제로 전화를 걸기 전에

e.Graphics.ScaleTransform(printableWidth/gridWidth) 

을 호출하기 전에 호출합니다. 이렇게하면 미리보기가 원하는대로 정확하게 표시되지만, 어떤 이유로 인해 실제 인쇄물이 스케일링을위한 코드를 추가하기 전과 완전히 똑같아 보입니다. 보고서가 너무 넓 으면 바로 옆으로 떨어집니다. 그 페이지!

미리보기를 위해 PrintPage 이벤트를 처리하는 방식과 프린터로 보내는 방식간에 약간의 차이가 있습니까? 내 평범한 PostScript 사무용 레이저 프린터가 ScaleTransform 기능을 처리하지 못할 수 있습니까? 나는 그것이 맹목적으로 인쇄 된 것을 인쇄해야한다고 생각 하겠지만, 생각했던 것보다 더 많은 처리가 필요할지도 모릅니다.

답변

0

OK, 나는 각 페이지에 대해 ScaleTransform을 호출하고 있다고 생각했지만 실제로는 PrintPage 핸들러에 대한 첫 번째 호출에서 실제로 실행 중이던 것으로 나타났습니다. 후속 호출은 줄 바꿈 된 조건으로 인해 줄 건너 뛰었습니다. 따라서 현명한 말로 - 인쇄물을 변형하려면 모든 페이지마다 독립적으로 수행해야합니다.

관련 문제