Alfresco Action - 使用操作将文件转换为PDF

时间:2017-01-31 16:32:22

标签: javascript alfresco alfresco-share ecm

我使用Alfresco V5.0.d并且我需要添加一个动作,允许用户将此文档转换为PDF格式并将PDF文档放到另一个目录中。

默认情况下,Alfresco根据我的需要提出两项行动:

  • "关联简单的工作流程" :它添加了一个动作(在动作列表中)但是文档必须被复制或替换到另一个目录中
  • " Tranform and copy contenu" :此操作将文档转换为PDF并将此PDF替换为另一个目录,但此操作可自动生成

或者,我想添加一个操作,当用户点击它时,会从文档创建一个PDF文件,并将此PDF文件替换为另一个目录。

由于Alfresco提出的默认操作(没有开发或脚本)或者我需要通过开发/添加脚本来添加此操作,我不知道是否可以这样做。< / p>

你能帮助我或给我一些建议吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

如前所述,需要进行一些开发。进行转换的API很简单,但如果你从未做过任何Alfresco开发,那么将所有部分放在一起需要花费一些时间。本文介绍了有关添加发送电子邮件操作http://docs.alfresco.com/5.2/tasks/dev-extensions-share-tutorials-add-action-doclib.html的操作的教程。

您可以查看http://ecmarchitect.com/alfresco-developer-series周围添加操作以及http://docs.alfresco.com/5.2/references/dev-extension-points-actions.htmlhttp://docs.alfresco.com/5.2/references/dev-services-content.html

您也可以使用您创建的javascript Web脚本执行此操作,以便在Web脚本的javascript部分对存储库端进行转换(这只是几行javascript http://docs.alfresco.com/5.2/references/API-JS-Transformation-document.html)。您只需添加共享配置和一点点javascript即可调用Web脚本。

如果你已经与Alfresco一起工作,这需要几个小时的努力。但是,如果您没有使用Alfresco开发的经验,那么最简单的方法就是创建一个转换和复制内容规则。请记住,您可以将其基于位置,但也可以添加其他条件,例如检查节点上属性的值(例如,当status = approved时)。

答案 1 :(得分:1)

使用以下代码创建操作(share-config-custom.xml)

YAHOO.Bubbling.fire("registerAction", {
    actionName : "convertAndDownload",
    fn : function convertAndDownload(record) {

        var nodeid = record.nodeRef;

        Alfresco.util.Ajax.request({
            url : Alfresco.constants.PROXY_URI+ "/transformer/filetopdf?noderef=" + nodeid,
            successCallback : {
                fn : function onTransformAction_success(response) {
                    var pdfNodeRef = response.json.pdfNodeRef;
                    var noderef = response.json.pdfNodeRef;
                    pdfNodeRef = pdfNodeRef.replace("://", "/");
                    window.open(Alfresco.constants.PROXY_URI+ "slingshot/node/content/" + pdfNodeRef+ "?a=true");

                    Alfresco.util.Ajax.request({
                        url : Alfresco.constants.PROXY_URI+ "/transformer/filedelete?noderef=" + noderef,
                        successCallback : {
                            fn : function onTransformAction_success(response) { },
                            scope : this
                        },
                        failureCallback : {

                            fn : function onTransformAction_failure(response) {},
                            scope : this
                        }
                    });
                },
                scope : this
            },
            failureCallback : {

                fn : function onTransformAction_failure(response) {
                    Alfresco.util.PopupManager.displayMessage({
                        text : "Something went wrong,please try again later"
                    });
                },
                scope : this
            }
        });
    }
});

action.js

var node = args["noderef"];
var docNode = search.findNode(node);
var nodeTrans = docNode.transformDocument("application/pdf");
model.pdfNodeRef = nodeTrans.nodeRef;

这是执行转换的webscript代码。

oe_main.sql