1

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

默认情况下,Alfresco 会根据我的需要提出两个操作:

  • “关联简单工作流”:它添加了一个动作(在动作列表中),但必须将文档复制或替换到另一个目录中
  • “转换和复制内容”:此操作将文档转换为 PDF 并将此 PDF 替换到另一个目录,但此操作自动工作

或者,我想添加一个操作,当用户单击它时,会从文档创建一个 PDF 文件,并将该 PDF 文件放置到另一个目录中。

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

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

谢谢 !

4

2 回答 2

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 脚本来执行此操作,以便在存储库端进行转换(这只是几行 javascript http://docs.alfresco.com/5.2/references/API-JS-Transformation-document。 html ) 用于 web 脚本的 javascript 部分。您只需要添加共享配置和一点点 javascript 即可调用 Web 脚本。

如果您已经使用 Alfresco 完成了工作,那么这需要花费几个小时的时间。但是,如果您没有使用 Alfresco 进行开发的经验,那么最简单的方法就是创建一个您提到的转换和复制内容规则。请记住,您当然可以基于位置,但也可以添加其他标准,例如检查节点上的属性值(例如,当 status=approved 时)。

于 2017-02-01T00:51:51.360 回答
1

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

<config evaluator="string-compare" condition="DocLibActions">
                <actions>
                    <action id="transform-to-pdf" type="javascript" label="Download as PDF">
                        <param name="function">convertAndDownload</param>
                        <evaluator negate="true">alfresco.tutorials.evaluator.checkFileType
                        </evaluator>
                    </action>
                </actions>

                <actionGroups>
                    <actionGroup id="document-browse">
                        <action index="400" id="transform-to-pdf" />
                    </actionGroup>
                </actionGroups>
            </config>

            <config evaluator="string-compare" condition="DocLibCustom"
                replace="true">
                <dependencies>
                    <js src="components/myactions/actions.js" />
                </dependencies>
            </config>

动作.js

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

这是执行转换的 webscript 代码。

var node = args["noderef"];
var docNode = search.findNode(node);
var nodeTrans = docNode.transformDocument("application/pdf");
model.pdfNodeRef = nodeTrans.nodeRef;
于 2017-02-01T06:53:35.573 回答