Alfresco — преобразование документа в pdf и загрузка пользовательского действия

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

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

person Sanjay    schedule 16.12.2016    source источник
comment
Вызовите это действие, отправив javascript в Repo Webscript для преобразования. После создания файла со стороны клиента получите nodeRef и откройте URL-адрес загрузки, например localhost:8080/share/proxy/alfresco/slingshot/node/content/. Позвольте мне попытаться создать образец для вас.   -  person Muralidharan Deenathayalan    schedule 16.12.2016


Ответы (1)


Здесь вы идете, и вам нужно передать ваши фактические значения nodeRef. Добавлено новое действие документа в share-custom-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-файлы или нет.

person Muralidharan Deenathayalan    schedule 16.12.2016
comment
можно ли удалить сгенерированный pdf после скачивания?если да то как? - person Sanjay; 17.12.2016
comment
Вы можете следить за тем, как работает действие «Удалить документ», обратитесь к методу _onActionDeleteConfirm в файле C:\Alfresco5\tomcat\webapps\share\components\documentlibrary\actions.js. Вам нужно вызвать веб-скрипт с помощью запроса на удаление AJAX и передать ссылку на PDF-файл noderef и убедиться, что PDF-документ загружен, но идеальным решением должно быть то, что вам нужно преобразовать документ в PDF на стороне сервера, сохранить их во временном местоположении alfresco и скачать это. - person Muralidharan Deenathayalan; 17.12.2016
comment
, могу ли я переопределить _onActionDeleteConfirm.call(это, запись) в моей функции действия custion? если да то как? Я пытался использовать этот способ, но он не работает. Alfresco.doclib.Actions.prototype._onActionDeleteConfirm.call(это, запись1); - person Sanjay; 22.12.2016
comment
@ Muralidharan Deenathayalan Могу ли я создать свою собственную политику/поведение? я хочу отключить загрузку, если пользователь однажды загрузил документ. - person Sanjay; 27.12.2016