Adobe PDF Embed API не может изменить PDF (возврат)

У меня почти та же проблема, что и в теме «Adobe PDF Embed API не может изменить pdf» и «Как использовать переменную в Adobe pdf embed API в качестве значения URL?». к которым обратился г-н Рэймонд Камден. Единственная разница в том, что я пытаюсь передать URL-адрес location:url из Flask. Вот код:

      if(window.AdobeDC) displayPDF(urldata);
else document.addEventListener("adobe_dc_view_sdk.ready", 
    () => displayPDF(urldata));

function displayPDF(urldata) {
    
    document.writeln(urldata[0]);
    document.writeln(urldata[1]);
    var myURL = urldata[0];
    var myFileName = urldata[1];
    adobeDCView.previewFile({
        content: {
            location: {
                url: myURL,
            },
        },
        metaData: {
            fileName: myFileName
        }
    }, viewerConfig);
} 

Обратите внимание, что я использую трюк мистера Камдена для работы с

хорошо приправленная курица и хорошие свежие яйца

. Я могу получить свои 2 параметра в файле html и в файле js. Они оба выводятся на страницу из функции displayPDF(urldata). К сожалению, они не попадают в контент: местоположение: URL-адрес и метаданные: имя файла. Если я жестко запрограммирую эти два параметра с существующим URL-адресом PDF и именем файла, я получу результат, который хочу получить.

Что я делаю не так?

Спасибо всем, кто может дать мне ключ.

Всего наилучшего,

Пьер-Эммануэль ФЕГА [электронная почта защищена]

1 ответ

Я нашел ответ на свой вопрос. Я также разместил его на форуме сообщества Adobe, потому что «Передача значения из внешней функции в функцию документа», потому что оба ответа от Shubhanshu Dixit и Raymond Camden очень помогли мне.

Моя цель состояла в том, чтобы открыть файл PDF из хранилища BLOB-объектов Azure, чтобы использовать его в веб-приложении Azure. Приложение находится во Flask. Вот как я это сделал, и он отлично работает как в Azure, так и локально:

МАРШРУТ ФЛЯГИ

      @app.route("/document", methods=['GET', 'POST'])
def document():   
# Microsoft blob storage SAS token creation for accessing PDF file in blob storage
  blob = get_blob_sas(BLOB_NAME_PATH, STORAGE_ACCOUNT_KEY, BLOB_CONTAINER_NAME, document_to_retrieve)   
  blob_url = 'https://'+BLOB_NAME_PATH+'.blob.core.windows.net/'+BLOB_CONTAINER_NAME+'/'+document_to_retrieve+'?'+blob
# URL and Filename parameters to send to Adobe Embed API    
  urldata = [blob_url, document_to_retrieve]
return render_template('view.html', title='SYSTRA Semantic Selected Document', urldata=urldata)

HTML-СТРАНИЦА

      <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <meta id="viewport" name="viewport" content="width=device-width, initial-scale=1"/>

    <script type="text/javascript" src="{{ url_for('static', filename='view.js') }}"></script>
    <script type="text/javascript">
        varPDF = previewFile({{urldata|tojson}})
    </script>
</head>
<body style="margin: 0px">

    <div id="adobe-dc-view"></div>
    <script type="text/javascript" src="https://documentcloud.adobe.com/view-sdk/main.js"></script>
</body>
</html>

ФУНКЦИИ ЯВАСКРИПТА

      function previewFile(urldata) {

    var myURL = urldata[0];
    var myFileName = urldata[1];

    if(window.AdobeDC) displayPDF(myURL, myFileName);
    else document.addEventListener("adobe_dc_view_sdk.ready", 
        () => displayPDF(myURL, myFileName));
}

function displayPDF(myURL, myFileName) {

    document.write('displayPDF');
    const viewerConfig = {
        embedMode: "FULL_WINDOW",
        defaultViewMode: "FIT_PAGE",    
        showLeftHandPanel: true,
        showAnnotationTools: true,
        showDownloadPDF: true,
        showPrintPDF: true,
        showPageControls: true,
        showDisabledSaveButton: true,
        downloadWithCredentials: true
    };

    var adobeDCView = new AdobeDC.View({
        clientId: '<CLIENT_ID_KEY_HERE',
        divId: "adobe-dc-view"
    });

    adobeDCView.previewFile({
        content: {
            location: {
                url: myURL,
            },
        },
        metaData: {
            fileName: myFileName
        }
    }, viewerConfig);
}

Надеюсь, это поможет.

Всего наилучшего, Пьер-Эммануэль.

Другие вопросы по тегам