2016-12-16 21 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> 

で を追加しました新しいドキュメントアクションが今、あなたは以下のようなあなたのjavascriptを注入する必要がある、あなたは、元の文書のnodeRefを渡す必要があり、私はここにハードコードを持っています。 Repowebscript、 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で

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 
      } 
     }); 
     } 

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ファイルnoderefを渡し、PDFドキュメントがダウンロードされていることを確認する必要がありますが理想的な解決策は、サーバー側で文書をPDFに変換し、それをダウンロードしてください。 –

+0

、私の欲求のアクション機能で_onActionDeleteConfirm.call(これ、レコード)を上書きできますか?もしそうなら、どうして?私はこの方法を使用しようとしましたが、動作しません。 Alfresco.doclib.Actions.prototype._onActionDeleteConfirm.call(this、record1); –

関連する問題