如何使用 Adob​​e pdf 嵌入 API 中的变量作为 URL 值?

问题描述

我使用 Adob​​e 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,模态正确打开。该变量确实正确打印在模态的其他元素中,但在 Adob​​e 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 的事件处理程序中进行。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...