Alfresco - 将 Doc 转换为 pdf 并下载自定义操作
Alfresco - Transform Doc to pdf and download custom action
我创建了一个将文档转换为 pdf 的自定义操作。有效
很好,但我想点击相同的自定义下载转换后的 pdf
action ,我的意思是我想在点击时转换和下载文档
custom action.How 可以做到吗?
我尝试了以下代码。
newdoc = document.transformDocument("application/pdf"); newdoc.save();
给你,你需要传递你的实际 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
}
});
}
在 Repo 网络脚本上,
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文件是否存在。
我创建了一个将文档转换为 pdf 的自定义操作。有效 很好,但我想点击相同的自定义下载转换后的 pdf action ,我的意思是我想在点击时转换和下载文档 custom action.How 可以做到吗? 我尝试了以下代码。
newdoc = document.transformDocument("application/pdf"); newdoc.save();
给你,你需要传递你的实际 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
}
});
}
在 Repo 网络脚本上, 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文件是否存在。