Как динамически изменить «src» или «данные» для объекта PDF / файла встраивания с помощью JavaScript? - PullRequest
1 голос
/ 18 сентября 2008

У меня есть веб-приложение, которое динамически загружает PDF-файлы для просмотра в браузере. В настоящее время он использует «innerHTML» для замены div на объект PDF. Это работает.

Но есть ли лучший способ получить идентификатор элемента и установить параметр «src» или «data» для объекта / встраивания и мгновенно загрузить новый документ? Я надеюсь, что экземпляр Adobe Acrobat Reader останется на экране, но новый документ загрузится в него.

Вот пример JavaScript объекта:

document.getElementById(`divPDF`).innerHTML = `<OBJECT id='objPDF' DATA="'+strFilename+'" TYPE="application/pdf" TITLE="IMAGING" WIDTH="100%" HEIGHT="100%"></object>`;

Любое понимание приветствуется.

Ответы [ 5 ]

1 голос
/ 18 сентября 2008

Я не уверен, сработает ли это, поскольку я не пробовал это в своих проектах.

(Глядя на ваш JS, я думаю, что вы используете jQuery. Если нет, поправьте меня)

Как только вы заполнили divPDF объектом, вы можете попробовать код ниже:

$("objPDF").attr({
    data: "dir/to/newPDF"
});

Опять же, я не уверен, сработает ли это для ваших конкретных нужд, но если вы присоедините этот код к обработчику событий, вы сможете отключить данные объекта.

Вы также можете обернуть его в функцию, которая будет использоваться снова и снова:

function pdfLoad(dirToPDF) {
    $("objPDF").attr({
        data: dirToPDF
    });
}
0 голосов
/ 12 мая 2017
function pdfLoad(datasrc) {

          var x =  document.getElementById('objPDF');
          x.data = datasrc;

        }

Это сработало для меня

0 голосов
/ 08 июля 2012

Открыть PDF-ссылку во внешнем окне PDFN с внешним PDF-Reader.EXE:

Нажав на следующую кнопку:

<FORM action=""> 
    <INPUT type="button" value="PDF file" 
        onclick="window.open('http://www.Dku-betrieb.eu/Pdfn.html', 
        'PDFN', 'width=620, height=630')">
</FORM>

открывает этот набор кадров Pdfn.html во внешнем окне:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="de">
    <meta http-equiv="refresh" content="12;url=http://www.dku-betrieb.eu/Pdfn1.html">
    <head>
        <title>Reader</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <frameset>
    <frame src="http://www.dku-betrieb.eu/File.pdf" frameborder=0 name="p1">
    </frameset>
</HTML>

, который обновляется за 12 секунд до загрузки PDF-Reader:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="de">
    <head>
        <title>Reader</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <frameset >
    <frame src="http://www.dku-betrieb.eu/PDFReader.exe" frameborder=0 name="p2">
    </frameset>
</HTML>

показывает как результат PDF-файл во внешнем окне PDFN.

0 голосов
/ 19 сентября 2008

@ Жаворонок Небольшая коррекция:

$('#objPDF').attr('data','dirToPDF');

# указывает, что objPDF является идентификатором, а не именем элемента. Хотя я до сих пор не знаю, сработает ли это.

@ Тристан Взгляните на плагин jQuery Media . В нем также упоминается поддержка PDF, хотя я никогда не использовал его.

0 голосов
/ 19 сентября 2008

Если обработчик для PDF является acrobat (он не должен быть), он предоставляет интерфейс JS, который задокументирован здесь:

http://www.adobe.com/devnet/acrobat/pdfs/js_api_reference.pdf

Проверьте, можете ли вы вызывать openDoc (urlToPdf) для document.getElementById ('objPDF') - даже если это работает, это работает только тогда, когда Acrobat используется для обработки 'application / pdf'

...