이 문제를 해결하기 위해 나왔습니다. Crystal Reports에서는 버튼을 무시할 수 없기 때문에 인쇄 버튼을 숨기고 JavaScript/jQuery를 사용하여 직접 인쇄 버튼을 추가했습니다.
다음은 인쇄 작동 방식에 대한 정보입니다. 인쇄 버튼을 누르면 뷰 상태 및 이벤트 인수가있는 포스트 백이 수행됩니다. 포스트 백은 브라우저가 인라인으로 열리는 PDF 파일을 반환합니다. PDF 파일은 파일이 열릴 때 실행되는 인쇄 명령과 함께 내장되어 있습니다.
그래서 우리가 할 수있는 것은 숨겨진 IFRAME을 사용하여 인쇄 가능한 PDF를로드하는 것입니다. 이렇게하면 기본 페이지가 영향을받지 않습니다. 나는 PDF 로딩 인라인이 페이지/브라우저가 그 상태를 손상시키는 원인이라고 생각한다.
아래 코드를 ASPX 페이지 상단에 배치하십시오. 페이지 상단에 배치해야합니다. 그렇지 않으면 맨 아래에 인쇄 대화 상자가 표시됩니다.
<iframe id="HiddenFrame" name="HiddenFrame" style="display: none;"></iframe>
<form id="PrintForm" action="MyPage.aspx" method="post" target="HiddenFrame">
<!-- Change the name if your object is not named 'CrystalReportViewer1' -->
<input type="hidden" name="__CRYSTALSTATECrystalReportViewer1" id="CRState" />
<input type="hidden" name="__VIEWSTATE" id="VState" />
<!-- Change this value to match your CrystalReportViewer object's name. -->
<input type="hidden" name="__EVENTTARGET" value="CrystalReportViewer1" />
<!-- This is the print command that is sent. -->
<input type="hidden" name="__EVENTARGUMENT" value='{"text":"PDF", "range":"false", "tb":"crpdfprint"}' />
</form>
전술 한 바와 같이, IFRAME 우리의 PDF를로드 : 여기
는 HTML입니다. 이 폼은 뷰 상태 및 이벤트 인수를 사용하여 서버에 POST를 수행하는 데 사용됩니다.
target
특성은 IFRAME에로드 할 양식을 알려줍니다. 메인 페이지에서
// Hide the print button.
$('#CrystalReportViewer1_toptoolbar_print').hide();
// Inject our own print button. You can apply the same icon to your print button using CSS to make it look like the original icon.
$('#CrystalReportViewer1_toptoolbar_print').parent().append('<div id="PrintButtonOverride"></div>');
// When user clicks our print button, copy the states and submit the form.
$('#PrintButtonOverride').click(function() {
$('#CRState').val($('#__CRYSTALSTATECrystalReportViewer1').val());
$('#VState').val($('#__VIEWSTATE').val());
$('#PrintForm').submit();
});
클릭 이벤트 복사 개의보기 주와 다음 양식을 제출 : 여기
는 자바 스크립트입니다. 나는이 포스트를 빨리 써서 내가 불분명 한 것을 남겨두면 사과한다.
다음 또는 이전 페이지 단추를 클릭하면 멈 춥니 다. 나는 또한이 문제에 대한 해결책이 필요하다. – JMS10