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);
}
Надеюсь, это поможет.
Всего наилучшего, Пьер-Эммануэль.