2016-12-16 2 views
0

문서를 pdf로 변환하는 사용자 지정 작업을 만들었습니다. 그것은 괜찮 았지만 동일한 사용자 정의 동작을 클릭하면 변환 된 pdf를 다운로드하고 싶습니다. 사용자 지정 작업 을 클릭하면 문서를 변환하고 다운로드하고 싶습니다. 어떻게 할 수 있습니까? 다음 코드를 시도했습니다.Alfresco - Doc를 pdf로 변환하고 사용자 지정 작업을 다운로드하십시오.

newdoc = document.transformDocument("application/pdf"); newdoc.save(); 
+0

이 작업을 전화를 통해 javascript를 통해 Repo Webscript로 변환하십시오. 파일이 생성되면 클라이언트 측에서 nodeRef를 가져 와서 http : // localhost : 8080/share/proxy/alfresco/slingshot/node/content/workspace/SpacesStore/34104a8f-6385-49e2-9cb2- 655939cdf0bf? a = true. 내가 샘플을 만들어 보자. –

답변

4

여기에 가서 실제 nodeRef 값을 전달해야합니다. 주 - 사용자 정의-config.xml에

<action id="convert-to-pdf-download" type="javascript" label="Download As PDF" icon="document-download"> 
<param name="function">onTransformToPDFAndDownload</param> 
</action> 

<actionGroups> 
<actionGroup id="document-browse">     
<action index="107" id="convert-to-pdf-download" /> 
</actionGroup> 
<actionGroup id="document-details"> 
<action index="107" id="convert-to-pdf-download" /> 
</actionGroup> 
</actionGroups> 

에서 추가 된 새 문서 작업은 이제 아래처럼 자바 스크립트를 삽입 할 필요가 당신은 원본 문서의 nodeRef을 통과해야하고 내가 여기에 하드 코드가 있습니다. Repowebscript에서

onTransformToPDFAndDownload: function dla_onTransformToPDFAndDownload(record) { 

      Alfresco.util.Ajax.request(
      { 
      url: Alfresco.constants.PROXY_URI + "com/quanticate/quanticliq/transformer/transform?noderef=workspace://SpacesStore/ec0ca4cf-9ea4-4c12-8f2c-5b0c406e454b", 
      successCallback: 
      { 
       fn: function onTransformAction_success(response) 
       { 
        debugger; 
        var pdfNodeRef = response.json.pdfNodeRef; 
        pdfNodeRef = pdfNodeRef.replace("://","/"); 

        window.open(Alfresco.constants.PROXY_URI + "slingshot/node/content/" + pdfNodeRef +"?a=true"); 
       }, 
       scope: this 
      }, 
      failureCallback: 
      { 
       fn: function onTransformAction_failure(response) 
       { 
        Alfresco.util.PopupManager.displayMessage(
        { 
        text: "Something went wrong,please try again later" 
        }); 
       }, 
       scope: this 
      } 
     }); 
     } 

, convert.get.desc.xml

<webscript> 
    <shortname>toPDF</shortname> 
    <desciption>Return PDF Node</desciption> 
    <url>/com/quanticate/quanticliq/transformer/transform</url> 
    <authentication>user</authentication> 
    <format default="json">any</format> 
</webscript> 

convert.get.json.ftl

\"{\"pdfNodeRef\" :\"${pdfNodeRef.nodeRef}\"}\" 

convert.get.js

function main() 
{ 
    var json = "{}"; 

    var docNode = search.findNode("workspace://SpacesStore/ec0ca4cf-9ea4-4c12-8f2c-5b0c406e454b"); 
    var nodeTrans = docNode.transformDocument("application/pdf"); 
    model.pdfNodeRef = nodeTrans.nodeRef; 
} 
main(); 

PDF로 다운로드를 클릭하면 PDF 문서가 생성되고 정보 문서 라이브러리 (또는 원본 문서가있는 위치)에 자동으로 다운로드되고 다운로드됩니다. 기존 PDF 파일이 존재하는지 여부를 확인해야합니다.

+0

다운로드 한 후 생성 된 PDF를 삭제할 수 있습니까? 그렇다면 어떻게됩니까? –

+0

"문서 삭제"작업의 작동 방식은 C : \ Alfresco5 \ tomcat \ webapps \ share \ components \ documentlibrary \ actions.js 파일의 _onActionDeleteConfirm 메소드를 참조하십시오. AJAX 삭제 요청을 사용하여 webscript를 호출하고 PDF 파일을 전달하고 PDF 문서가 다운로드되었는지 확인해야하지만 이상적인 솔루션은 문서를 서버 측 PDF로 변환하고 외부 임시 위치에 저장해야하며 다운로드 해. –

+0

, 내 커션 액션 함수에서 _onActionDeleteConfirm.call (this, record)을 재정의 할 수 있습니까? 그렇다면 어떻게? 나는이 방법을 사용하여 시도했지만 작동하지 않습니다. Alfresco.doclib.Actions.prototype._onActionDeleteConfirm.call (this, record1); –