2016-12-16 5 views
0

Я создал одно настраиваемое действие для преобразования документа в pdf. Он работал отлично, но я хочу загрузить преобразованный pdf при щелчке того же пользовательского действия , я имею в виду, что хочу конвертировать и загружать документ при нажатии пользовательских действий. Как это сделать? Я пробовал следующий код.Alfresco - Преобразование Doc в pdf и загрузка пользовательских действий

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

Вызвать это действие через общий доступ к JavaScript в Repo Webscript для преобразования. После создания файла с клиентской стороны получите nodeRef и пропустите URL-адрес загрузки, например http: // localhost: 8080/share/proxy/alfresco/slingshot/node/content/workspace/SpacesStore/34104a8f-6385-49e2-9cb2- 655939cdf0bf? а = верно. Позвольте мне попытаться создать образец для вас. –

ответ

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 исходного документа и у меня есть жесткий код здесь.

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

На 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

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

Вы можете следить за тем, как работает действие «Удалить документ», ссылаться на метод _onActionDeleteConfirm в файле C: \ Alfresco5 \ tomcat \ webapps \ share \ components \ documentlibrary \ actions.js. Вам нужно вызвать веб-страницу, используя запрос AJAX Delete, и передать файл PDF noderef и обеспечить загрузку PDF-документа, но идеальным решением должно быть то, что вам нужно преобразовать документ в PDF на серверной стороне, сохранить их во временном расположении в alfresco и загрузить. –

+0

, могу ли я переопределить _onActionDeleteConfirm.call (это, запись) в моей функции действия custion? если Да, то как? Я попытался использовать этот способ, но он не работает. Alfresco.doclib.Actions.prototype._onActionDeleteConfirm.call (это, запись1); –

Смежные вопросы