Tengo casi el mismo problema que en el hilo "La API de inserción de PDF de Adobe no puede cambiar el pdf" y "¿Cómo usar una variable en la API de inserción de PDF de Adobe como valor de URL?". a los que se dirigió el Sr. Raymond Camden. La única diferencia es que estoy tratando de pasar una URL a la ubicación: URL de Flask. Aquí está el código:
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); }Tenga en cuenta que estoy usando el truco del Sr. Camden para tratar con
pollo bien sazonado y buenos huevos frescos
. Puedo hacer que mis 2 parámetros vayan al archivo html y al archivo js. Ambos están escritos en la página desde la función displayPDF (urldata). Desafortunadamente, no llegan a content:ubicación:url y metadatos:nombre de archivo. Si codifico estos dos parámetros con la URL de PDF y el nombre de archivo existentes, obtengo el resultado que quiero obtener.
¿Qué estoy haciendo mal?
Gracias a quien me pueda dar una pista.
Mis mejores deseos,
Pierre-Emmanuel FEGA zepef@hotmail.com
He encontrado una respuesta a mi propia pregunta. También lo publiqué en el foro de la comunidad de Adobe porque "Pasar valor de una función externa a una función de documento" porque las respuestas de Shubhanshu Dixit y Raymond Camden me han sido de gran ayuda.
Mi objetivo era abrir un archivo PDF proveniente de Azure Blob Storage para usarlo en una aplicación web de Azure. La aplicación está en Flask. Así es como lo hice y funciona muy bien en Azure y localmente:
RUTA DEL FRASCO
@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)PÁGINA 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>FUNCIONES JAVASCRIPT
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); }Espero que esto ayude.
Todo lo mejor, Pierre-Emmanuel