2017-02-27 1 views
-1

html2canvas를 사용하여 HTML에서 div를 캡처하고 asp.net의 pdf 파일에 저장하려고합니다. 이렇게하려면 아래 자바 스크립트 코드를 사용하도록 권장했지만 코드는 click 이벤트에서 실행되지 않습니다? 버튼의버튼이 hmtl2canvas asp.net에서 작동하지 않습니다.

<script type="text/javascript" src="Scripts/html2canvas.js"></script> 
<script type="text/javascript" src="Scripts/html2canvas.min.js"></script> 

    document.addEventListener("DOMContentLoaded", function (event) { 
      document.getElementById("Print_Button").addEventListener("OnItemCommand", (function() { 
       html2canvas(document.getElementById("form1"), { 
        onrendered: function (canvas) { 
         cvs = canvas.toDataURL('image/png'); 
         cvs.save("mcn.pdf") 
        } 
       }); 
      })); 


    }); 

속성은 다음과 같습니다

ID = "Print_Button"RUNAT = "서버"텍스트 = "인쇄 MCN"유형 = "입력"

+0

포스트 백을 유발하는 버튼에서 'runat = "server"'속성을 제거하여 페이지를 다시로드합니다. – Archer

+0

안녕하세요 @ 아처, 버튼을 서버에 다시 게시하는 것을 중지했지만 지금은 아무 것도하지 않습니까? 어디에서 잘못 될지 모르겠습니다. 어떤 도움을 주셔서 감사하겠습니다. – kehoewex86

답변

-1

전화 htmlcanvasdownload()에 이벤트는 다음에, 귀하의 질문에 편집 클릭을 수신

document.addEventListener("DOMContentLoaded", function (event) { 
    htmlcanvasdownload(); 
    function htmlcanvasdownload() { 
     document.getElementById("Print_Button").addEventListener("OnItemCommand", (function() { 
      html2canvas(document.getElementById("form1"), { 
       onrendered: function (canvas) { 
        cvs = canvas.toDataURL('image/png'); 
        cvs.save("mcn.pdf") 
       } 
      }); 
     })); 

    } 
}); 

좋아 귀를 기울이

document.getElementById("Print_Button").addEventListener("click", function(){ 
    //..process canvas 
    return false;//stop event going to server 
}); 

html2canvas 작동하는지 확인 : ASP.NET 웹 폼에서

html2canvas(document.getElementById("form1"), { 
     onrendered: function (canvas) { 
      var cvs = canvas.toDataURL('image/png') 
      //this emage need to be posted to server 
      //var file=new Blob([new Uint8Array(array)], {type: 'image/png'}); 
      // with ajax or with form post 
      // as blob to a input type file or as imput type text where you send image/png as base64 

      //this will open your image 
      window.open(cvs); 
     }, 
     width:320, 
     height:220 
    }); 
+0

안녕하세요 @SilentTremor, 답변 해 주셔서 감사합니다. 나는 방금 시도했지만 아무런 일도 일어나지 않고 심지어 오류 알림도 발생하지 않습니다. 내가 html2canvas 작동 asp.net에서 사용해야하는 뭔가가 누락 궁금하다. 지금 버튼을 클릭하면 페이지가 새로 고쳐집니다. 해당 페이지의 테이블 셀 중 하나에 타임 스탬프가있는 C#이 있으며 버튼을 클릭 할 때마다 업데이트됩니다. – kehoewex86

+0

'htmlcanvasdownload()'함수의 일부 코드를 래핑하는 목적은 무엇입니까? 그게 어떤 차이가 있는지 나는 볼 수 없다. – Archer

+0

그/그녀가 htmlcanvasdownload() 호출없이 질문을 편집 – SilentTremor

0

기본 동작은 RUNAT = "서버"와 컨트롤의 ID는 ID의 충돌이 아니라 수 있도록 변환됩니다 것입니다. 그래서 귀하의 버튼과 양식에 id가 없을 가능성이 있습니다 (ClientIdMode가 static으로 설정되어 있지 않은 경우). 코드에 사용 된 문자

ClientIdMode를 양식과 버튼 모두에서 정적으로 설정하면 문제가 발생합니다. .

이 (jQuery를 사용) 테스트 할 때 내가 사용하는 코드이며, 그것은 나를 위해 잘 작동 : 나는 cvs.save을 제거

<script type="text/javascript" src="scripts/html2canvas.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.3/jspdf.debug.js"></script> 
<script> 


    $(function() { 
      $("#Print_Button").on("click", function() { 
       html2canvas($("#form1"), { 
        onrendered: function (canvas) { 
         imgData = canvas.toDataURL('image/png'); 
         var pdf = new jsPDF(); 

         pdf.addImage(imgData, 'PNG', 0, 0); 
         var download = document.getElementById('download'); 

         pdf.save("download.pdf"); 
        } 
       }); 
      }); 


    }); 
</script> 

("...") - 행, 데이터 때문에 당신은 "데이터 : 이미지/png; base64, iVBORw0KGgo .... =="와 같은 base64 인코딩 된 이미지를 포함하는 문자열을 얻습니다. 따라서 저장 방법이 없습니다. 그러나 jspdf-library를 사용하면 여전히 클라이언트 측에서 PDF로 저장할 수 있습니다.

관련 문제