问题描述
我使用 Adobe PDF Embed API (https://www.adobe.io/apis/documentcloud/dcsdk/docs.html?view=view) 在我的网站上的模态中显示 pdf。 因为我希望模态只改变一个小细节(显示在那里的 pdf 的文件 url),所以我想动态地使用文件名。所以我这样做了:
var MyType = typeof(MyClass);
foreach (ConstructorInfo MyConstructor in MyType.GetConstructors())
{
var MyParameters = MyConstructor.GetParameters();
//todo get base parameters ': base(0.0f,0.0f,color1,color2)' ?
}
在它之前的标题中
document.addEventListener("adobe_dc_view_sdk.ready",function() {
var adobeDCView = new AdobeDC.View({
clientId: "xyz",divId: "adobe-dc-view"
});
adobeDCView.previewFile({
content: {
location: {
var model_filename_chosen = "https://www.URL.com/files/" +
var model_filename;
// Does get printed correctly
console.log(model_filename_chosen);
//doesn't get parsed at all
url: model_filename_chosen
}
},MetaData: {
fileName: "Something"
}
},{
});
});
那些触发器看起来像这样:
function openFahrzeugModal(data) {
x = new bootstrap.Modal(document.getElementById("modalFahrzeug"));
x.toggle();
$('#input_model_hidden').val(data);
var model_filename = data;
console.log(data);
}
所以任何日志都可以正确打印,但根本没有显示 pdf,模态正确打开。该变量确实正确打印在模态的其他元素中,但在 Adobe embed-thing 中结果为空。我确实为代码和文件使用了相同的域,并且我的 API 密钥是有效的。只要我输入一个静态 URL(基本上与控制台上打印的 URL 相同),pdf 就会正确显示。
为什么会这样,我需要解决什么问题?
解决方法
这是一个时间问题。只要我们的库被加载,您在上面的代码就会运行。您想要的是 previewFile
代码仅在用户输入时运行。我会修改 openFahrzeugModal
以便 it 将运行该部分。像这样:
function openFahrzeugModal(data) {
x = new bootstrap.Modal(document.getElementById("modalFahrzeug"));
x.toggle();
$('#input_model_hidden').val(data);
var model_filename = data;
var model_filename_chosen = "https://www.URL.com/files/" + model_filename;
adobeDCView.previewFile({
content: {
location: {
url: model_filename_chosen
}
},metaData: {
fileName: "Something"
}
},{
});
}
我是手工输入的,所以它可能并不完美。但是请注意,在库准备就绪之前,您不想运行单击事件。通常我会在 JS 中分配点击处理程序,而不是 HTML,并在 adobe_dc_view_sdk.ready
的事件处理程序中进行。