Automatisiertes Exportieren von Webseiten als PDF

Mitglied: DarkTrinity

DarkTrinity (Level 1) - Jetzt verbinden

26.04.2021 um 15:01 Uhr, 564 Aufrufe, 11 Kommentare, 1 Danke

Hallo liebe Community,

Ich habe folgendes Problem bzw Ziel:
Es sollen mehrere Webseiten automatisiert als PDF Datei exportiert werden. Es handelt sich hier um Stundenzettel von Kollegen. Die URLS haben alle eine fortlaufende ID, zB "https://URL.tld?id=1?weitereDatendieImmerGleichSind=blabla"
Nach Möglichkeit sollte das mit "einfachen Bordmitteln" von Windows 10 realisiert werden, zB Powershell.

Ich habe hier ein wenig experimentiert und verschiedene Ansätze ausporbiert, ich kriege es aber nicht geregelt :( face-sad Von dem Tool wkhtmltopdf habe ich mir da viel versprochen, doch es läuft leider auf Fehler und generiert leere PDF Dokumente :( face-sad

Vielleicht hat sich hier ja bereits jemand mit sowas beschäftigt oder hat einen Tipp für mich.

Lieben Dank
Mitglied: MrCount
26.04.2021 um 15:18 Uhr
Servus,

da könnte dir

Invoke-Webrequest

und diese Function helfen


Bitte warten ..
Mitglied: colinardo
LÖSUNG 26.04.2021, aktualisiert 27.04.2021
Servus @DarkTrinity,
ein Beispiel von diversen möglichen, mit einem einfachen CMDLet das ich vor einiger Zeit mal zusammen geschrieben hatte ...

Grüße Uwe
Bitte warten ..
Mitglied: DarkTrinity
27.04.2021, aktualisiert um 08:43 Uhr
Hallo @Uwe ,

das Script ist toll - erstmal ganz lieben Dank :) face-smile Aber irgendwie funktioniert es nicht wirklich...

Wenn ich es über die Powershell ausführe via powershell Web2PDF.ps1 erzeugt es die folgende Fehlermeldung;


Auch wenn ich die Powershell mit Administrator- Rechten ausführe oder den Parameter -ExecutionPolicy Bypass verwende erscheint diese Meldung....

Allerdings funktioniert es über die IDE MS Visual Studio Code etwas besser - es kommt keine Fehlermeldung. Allerdings erzeugt es eine leere PDF Datei mit dem Namen stundenzettel_id_0.pdf.

Ich habe es dann in Visual Studio Code etwas verändert - Zeile 81 - 84:
So erzeugt es den Stundenzettel wie gewünscht - aber auch nur dann wenn ich es über die IDE ausführe. In der Powershell- Konsole wird nach wie vor diese Meldung erzeugt....
Bitte warten ..
Mitglied: colinardo
27.04.2021, aktualisiert um 09:46 Uhr
Zitat von @DarkTrinity:
Hallo @Uwe ,
Servus zurück.
das Script ist toll - erstmal ganz lieben Dank :) face-smile Aber irgendwie funktioniert es nicht wirklich...
Wurde hier natürlich wie immer vorher einwandfrei getestet ;-) face-wink. Ich poste keinen Code den ich nicht vorher teste.

Wenn ich es über die Powershell ausführe via powershell Web2PDF.ps1 erzeugt es die folgende Fehlermeldung;


Das ist z.B. eine Zeile die in meinem Code überhaupt nicht vorkommt! Ergo muss diese entweder von dir selbst hinzugefügt worden sein oder in deinem Powershell-Profil schon der Syntax-Fehler eingebaut sein!
Wenn du selbstständig Teile veränderst kann ich natürlich nichts dran machen :-) face-smile.

Auch wenn ich die Powershell mit Administrator- Rechten ausführe oder den Parameter -ExecutionPolicy Bypass verwende erscheint diese Meldung....
Admin-Rechte sind nicht nötig für das Ausführen des Skripts. Nur Schreibrechte auf den Skript bzw. Temp-Ordner für das Herunterladen von 2 DLLs aus dem Nuget Repo.
Ich habe es dann in Visual Studio Code etwas verändert - Zeile 81 - 84:
Das ist erst mal Blödsinn x mal den selben Output zu erzeugen, wenn dann verändert man die Parameter $start_id und $stop_id auf den gewünschten Wert so dass die Schleife nur mit den entsprechenden IDs ausgeführt wird.
So erzeugt es den Stundenzettel wie gewünscht - aber auch nur dann wenn ich es über die IDE ausführe. In der Powershell- Konsole wird nach wie vor diese Meldung erzeugt....
Dann liegt der Fehler sehr wahrscheinlich in deinem Powershell Profil, denn obige Zeile ist wie gesagt nicht in meinem Skript enthalten und hier funktioniert das reine Skript auf sämtlichen Windows 10 oder auch 7 Maschinen problemlos, es muss also auf deiner Seite liegen.
Starte das Skript mal ohne das Laden des Powershell-Profils des Users, mit dem Parameter -NoProfile.
Und schau mal in dein Powershell-Profil-Skript, was da so alles drin steht. Dazu in einer Konsole eingeben:
start $profile
Das sollte dein Profil-Skript öffnen sofern vorhanden.

Grüße Uwe
Bitte warten ..
Mitglied: DarkTrinity
27.04.2021, aktualisiert um 09:31 Uhr
Zitat von @colinardo:
Das ist erst mal Blödsinn x mal den selben Output zu erzeugen, wenn dann verändert man die Parameter $startid und $stopid auf den gewünschten Wert

In dem Fall wird aber ein leere Datei erzeugt und die Variable (die ID) hat den Wert 0. Daher habe ich das zu Testzwecken mal mit statisch probiert


DIe Fehlermeldung in der Konsole hatte mich auch gewundert, da ich diesen Snip nämlich ebenfalls nicht in dem Code gefunden habe Hinzugefügt habe ich diese Zeile jedenfalls nicht

Der Einwand mit dem Powershell Profil macht Sinn, es würde auch die unterschiedlichen Ergebnisse bei IDE und Konsole erklären. Ich gebe das bei uns mal an den zuständigen Kollegen weiter.

Wenn das geklärt ist mache ich damit weiter.
Bitte warten ..
Mitglied: colinardo
27.04.2021, aktualisiert um 09:45 Uhr
Zitat von @DarkTrinity:
In dem Fall wird aber ein leere Datei erzeugt und die Variable (die ID) hat den Wert 0
Dann hast du aber selbst die Variable $startid schon auf 0 geändert ... Diese müssen natürlich auf die Werte gesetzt werden für die IDs deren Seiten du exportieren willst, diese werden einfach hochgezählt. $start_id ist der Anfangswert und $stop_id ist der Endwert. $start_id..$stop_id ist ein einfacher FOR-Loop zählt also immer eins hoch bis $stop_id erreicht ist.
Wenn das geklärt ist mache ich damit weiter.
Alles klar.
Bitte warten ..
Mitglied: DarkTrinity
27.04.2021 um 09:36 Uhr
Nein, ich habe die Werte von 128 zu 129 begrenzt:


Bitte warten ..
Mitglied: colinardo
27.04.2021, aktualisiert um 09:42 Uhr
Ach, Asche auf mein Haupt, Variablen-Tippfehler in Zeile 81, die Unterstriche fehlten in den Variablennamen, ist korrigiert, my fault sorry ... :-) face-smile.
Bitte warten ..
Mitglied: DarkTrinity
27.04.2021 um 09:52 Uhr
Urgs, da hätte ich auch selbst drauf kommen können - es sticht Dir ja schon fast ins Auge XD
Never mind :) face-smile
Bitte warten ..
Mitglied: DarkTrinity
27.04.2021, aktualisiert um 11:05 Uhr
Also ....

Diese besagten Zeilen, über die sich die Powershell Konsole beschwert, sehe ich nicht in der Visual Studio IDE....

ABER: Mit einem cat web2pdf.ps1 sehe ich sie .... Schon unglaublich ....

Ich habe den in der Vidual Studio IDE für mich sichtbaren Code nun per Copy & Paste in Notepadd++ eingefügt, neu gespeichert und siehe da: Das Script läuft :) face-smile

Nochmal vielen Dank :) face-smile
Bitte warten ..
Mitglied: colinardo
27.04.2021, aktualisiert um 11:50 Uhr
Schuss ins Blaue: Vielleicht versehentlich zwei verschiedene Scripte mit dem selben Namen in unterschiedlichen Verzeichnissen bearbeitet, passiert mir auch ab und zu mal wenn man sich in der Bearbeitungsphase entscheidet die Files schon mal verschieben zu müssen, in der IDE aber noch das alte Ziel hinterlegt ist.
Das Script läuft
Na dann haben wir das Ziel ja erreicht :-) face-smile.
Nochmal vielen Dank
Immer gerne.

Grüße Uwe
Bitte warten ..
Heiß diskutierte Inhalte
Hyper-V
Spricht was gegen die Virtualisierung mit Hyper-V?
bauinformatikerVor 1 TagFrageHyper-V32 Kommentare

Seit 10 Jahren betreiben mein Kollege und ich 2 Hosts mit ESXi. Nun sollen die neu beschafft und neu installiert werden. Bis auf einen ...

Off Topic
Vom IT-Systemelektroniker zurück zur "IT"
xsheynVor 1 TagFrageOff Topic8 Kommentare

Schönen guten Abend, vor einigen Wochen hatte ich schonmal einen Thread erstellt, dass ich IT-Systemelektroniker bin aber kaum Erfahrung in der "Typischen IT" habe. ...

Entwicklung
Plattformübergreifende Programmierung mit Visual Studio
gelöst nagitaVor 1 TagAllgemeinEntwicklung11 Kommentare

Hallo ich habe mir vor einiger Zeit die aktuellste Version von Visual Studio installiert und bin eigentlich auch recht zufrieden damit. Ich habe vor, ...

Datenbanken
Liste als PDF ausdrucken
jensgebkenVor 1 TagFrageDatenbanken6 Kommentare

Hallo Gemeinschaft, Ich habe eine Access Datenbank und darin eine Abfrage in der Kunden Adressen und Kosten angezeigt werden pro Kunde. Nun möchte ich, ...

Video & Streaming
Netzwerkspeicher IPTV
uridium69Vor 1 TagFrageVideo & Streaming8 Kommentare

Hallo Ich möchte gerne meine beiden Android IPTV Receiver das NAS als Netzwerkspeicher und als Aufnahmemedium hinzufügen, ich habe unter den Optionen "Netzwerkspeicher hinzufügen" ...

Exchange Server
Postfach für öffentliche Ordner ist voll
gelöst Tommy525600Vor 22 StundenFrageExchange Server6 Kommentare

Hallo an alle, ich habe folgendes Problem: Mein primäres Postfach für öffentliche Ordner ist voll (99,58 GB) (und ja, ich kann auch nix dafür). ...

Netzwerke
PFSense und Transferprobleme
Xaero1982Vor 22 StundenFrageNetzwerke8 Kommentare

Moin Zusammen, leidiges Thema PFSense - ich hab mich mal wieder ran gewagt. Ich hab hier so ein paar VLANs laufen und nen ESX. ...

Outlook & Mail
Outlook export to PST schlägt fehl - Alternativen?
gelöst StefanKittelVor 1 TagFrageOutlook & Mail3 Kommentare

Hallo, ich versuche gerade ca. 20 Postfächer von einem Hosted Exchange-Anbieter in PST-Dateien zu sichern/archivieren. Bei 3 Postfächer schläft dies mit "unbekannter Fehler" fehl. ...