Heute bin ich auf eine Webseite gestoßen, die ein für mich interessantes PDF in einem Online-PDF-Reader bereitstellt. Dieser Reader verfügt normalerweise über eine Download-Funktion, die in diesem Fall jedoch durch spezifische Einstellungen im JavaScript-basierten Reader deaktiviert wurde. In diesem Artikel beschreibe ich einen Weg diese Blockierung zu umgehen.
Ein direkter Download der Datei „mypdf.pdf“ unter Angabe des Pfades ist nicht möglich, da dies vom Webserver scheinbar selbst unterbunden wird. Der Quellcode der Webseite lautet wie folgt:
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
<title>Title</title>
<script src="pdf.viewer2.js"></script>
<link href="//mydata.com/data/mypdf.pdf" rel="preconnect">
<link href="//mydata.com/data/mypdf.pdf" rel="dns-prefetch">
</head>
Nach kurzer Recherche im Internet fand ich den Hinweis, dass die relevanten Befehle des PDF-Readers in der Regel weiterhin vorhanden sind und daher direkt über die Konsole des Browsers gesteuert werden können. Dabei wird das für den Download relevante Klick-Event des ausgeblendeten Download-Buttons ausgelöst. Um dies zu erreichen, muss der folgende Befehl ausgeführt werden:
document.getElementById('download').click()
Nach Ausführung des Befehls startet der Download der PDF-Datei. Es kann jedoch notwendig sein, wenn der PDF-Reader in einem iFrame eingebettet ist, dass die Webseite des iFrame vorher direkt aufgerufen werden muss.