wescraven07
Goto Top

Druckbefehl in PHP schreiben

Hallo Leude, folgende Frage:

Ich habe einen Server bei mir im Netzwerk, der verschiedene Produktdaten hält. Das Ganze ist in 2 Frames aufgebaut. Links der Produktbaum und rechts das Produktdatenblatt.

Ich möchte jetzt versuchen, dass Produktdatenbatt zu drucken und zwar sowohl als PDF als auch als Hardcopy. Dummerweise tritt in beiden Fällen das Problem auf, dass nicht der gesamte Inhalt gedruckt wird, sondern nur bis zur Häflte bzw. dreiviertel.der Seite.

Ich habe schon mehrere PDF-Printer ausprobiert, bei allen dasselbe Ergebniss. Auch wenn ich in Firefox die Option "nur den aktuellen Frame anzeigen" nutze, wird nur ein Teil der Seit gedruckt. Hat da jemand einen Tip, wie man das Problem löst?

Ich könnte alternativ in diesem Datenballt noch einen Reiter einfügen und ein PHP Script hinterlegen und damit eine Druckbefehl ausgeben allerdings weiss ich nicht, wie dafür der PHP-Befehl lauten würde...

Hat jemand eine Idee?

Danek schonmal.

Greetz
Der Wes

Content-Key: 263203

Url: https://administrator.de/contentid/263203

Printed on: April 26, 2024 at 21:04 o'clock

Member: eisbein
eisbein Feb 12, 2015 at 13:56:11 (UTC)
Goto Top
Hallo!

Um mit PHP eine PDF-Seite zu erstellen gibt es http://fpdf.de/.

Ich würde den HTML-Inhalt des Frames mittels Ajax an ein PHP-File übergeben und damit eine PDF-Seite generieren, die kann man dann ansehen, speichern oder drucken.

Gruß
Eisbein
Member: eisbein
eisbein Feb 12, 2015 at 14:08:44 (UTC)
Goto Top
Es könnte auch schon genügen den HTML-Inhalt des Frames in einer neuen Browser-Seite anzuzeigen und dann zu drucken bzw. den PDF-Printer zu verwenden.
Member: wescraven07
wescraven07 Feb 12, 2015 at 14:43:27 (UTC)
Goto Top
klingt schonmal gut, wie würde das scriptseitig ausehen? Ich habe die Möglichkeit eine PHP-Datei zu erstellen und dieser ein einen PHP-Code zu hinterlegen? Wie müsste dieser Code aussehen? Ich bin gerade am Anfang mit PHP...
Member: eisbein
eisbein Feb 12, 2015 at 16:45:51 (UTC)
Goto Top
Jeder fängt einmal an, das soll keine Hürde bzw. Ausrede sein.
Was hast du denn schon probiert....? face-smile
Member: eisbein
eisbein Feb 12, 2015 at 16:54:10 (UTC)
Goto Top
Member: wescraven07
wescraven07 Feb 16, 2015 at 13:38:00 (UTC)
Goto Top
Wäre prinzipiell hilfreich, aber ich fürchte, den Druckbefehl Scriptseitig zu lösen ohne "echte"-Entwicklungsumgebung wird schwierig, nachdem ich festgestellt habe, dass das alle realtiv starr ist...

Ich habe auch schon versucht, dass einfach ganz simpel über die Firefox-Drcuekn-Option zu lösen- Das Problem ist, dass es mir immer nur den jeweils angezeigten Inhalt ausdruck und den Rest, der eingentlich in 2 oder 3 Seiten umgebrochen werden und ausgeruckt werden sollte einfach abschneidet.

Hast Du eine Idee woran das liegen könnte, bzw. könnte man das vielleicht sogar ausserhalb der Serverapplikation Windows Seitig lösen? Also ein Script schreiben, dass dieses Problem Windows oder Browserseitig löst?
Member: eisbein
eisbein Feb 17, 2015 at 05:35:08 (UTC)
Goto Top
Guten Morgen!

Hast du ein Code-Beispiel?

Gruß
Eisbein
Member: wescraven07
wescraven07 Feb 17, 2015 at 07:10:47 (UTC)
Goto Top
Moin, nicht wirklich, ich brauche einen ganz neuen Ansatzpunkt.

Ich muss irgendwie realisieren, Windows oder Browserseitig, dass mir die komplette Seite ausgedruckt wird und nicht nur der Bildschirminhalt, weisst Du was ich meine?
Member: eisbein
eisbein Feb 17, 2015 updated at 07:39:49 (UTC)
Goto Top
Hallo!

Windows und Browser sind zwei unterschiedliche Dinge!

Was spricht gegen JavaScript?

Du hast keinen Code und suchst einen anderen Lösungsansatz...?! Klingt schon mal viel versprechend!

Gruß
Eisbein
Member: wescraven07
wescraven07 Feb 17, 2015 at 08:17:08 (UTC)
Goto Top
ok, ich erkläre mal die Ausganzsituation:

Ich habe einen Server auf dem eine Anwendung läuft, die PHP-basiert ist. Ich habe aber zu der Anwendung keine Enwicklungsumgebung, bin also sehr eingeschänkt, wass das Anpassen des Codes betrifft.

Meine Vorhaben jetzt ist Folgendes: Die Anwendung ist in mehreren Frames aufgebaut, links ein Navigationsbaum und rechts ein Datenblatt. Dieses Datenblatt will ich mir ausdrucken lassen.

Das Problem dabei ist, ich kann mir zwar den Frame, den ich ausdrucken will, allein anzeigen und ausdrucken lassen, aber sobald der Seiteninhalt über mehr als eine Seite geht, wird der Rest nicht mehr ausgedruckt und abgeschnitten. Wenn ich die Seitengrösse runterskaliere ist alles nicht mehr lesbar.

Gegen Javascript spricht prinzipiell gar nichts, aber ich kann es ohne Entwicklungsumgebung nicht einbauen, deshlab muss ich das irgendwie anders lösen.
Member: eisbein
eisbein Feb 17, 2015 updated at 08:44:15 (UTC)
Goto Top
Hallo!

Ich habe einen Server auf dem eine Anwendung läuft, die PHP-basiert ist. Ich habe aber zu der Anwendung keine Enwicklungsumgebung

Für PHP brauchst du keine Entwicklungsumgebung. PHP-Datei im Text-Edito öffnen, berabeiten, wieder als PHP-Datei (Endung .php!!!) speichern und gut ist es.

Das Problem dabei ist, ich kann mir zwar den Frame, den ich ausdrucken will, allein anzeigen und ausdrucken lassen, aber sobald der Seiteninhalt über mehr als eine Seite geht, wird der Rest nicht mehr ausgedruckt und abgeschnitten. Wenn ich die Seitengrösse runterskaliere ist alles nicht mehr lesbar.

Dafür habe ich doch einen Link gepostet, der genau das macht?!

Gegen Javascript spricht prinzipiell gar nichts, aber ich kann es ohne Entwicklungsumgebung nicht einbauen

Das verhält sich genau wie bei PHP - einfach Datei öffnen und den Code schreiben und speichern.

HTML, JavaScript und PHP-Kenntnisse sind sicherlich sehr hilfreich!
PHP wird am Server verarbeitet und das Resultat zum Client gesendet, JavaScript wird (normalerweise) im Browser des Clients verarbeitet, sofern JavaScript aktiviert ist.

Wo genau ist nun das Problem?

Zugriff auf den Server und die Dateien ist vorhanden?

Gruß
Eisbein
Member: wescraven07
wescraven07 Feb 17, 2015 at 09:40:11 (UTC)
Goto Top
Zugriff auf den Server ist theoretisch vorhanden allerdings noch kein Zugriff auf Dokumentatuion usw. Kann man ein Javascript zu diesem Zweck schreibn und lokal nur für den Druck Clientseitig ausführen?
Member: eisbein
eisbein Feb 17, 2015 updated at 11:52:08 (UTC)
Goto Top
Hallo!

Zugriff auf den Server ist theoretisch vorhanden

Hast du nun Zugriff auf die PHP-Datei oder nicht?

Denk nicht so kompliziert. In die entsprechende PHP-Datei, die den Button/Link (was auch immer) zur Darstellung des Frameinhaltes als neue Seite beinhaltet, wird das JavaScript eingefügt.
Wenn dann auf den Button/Link etc. geklickt wird, wird eine neue Seite im Browser mit dem Frameinhalt angezeigt, diese wird dann wie gewohnt mittes Browser-Druck-Befehl gedruckt oder als PDF gespeichert.

Deine Aufgabe besteht jetzt nur darin, die betreffende PHP-Datei auf dem Server ausfindig zu machen, diese mit einem Texteditor zu öffnen, das Javascript einzufügen und danach wieder als PHP-Datei auf dem Server zu speichern.
Und nicht vergessen, die Original PHP-Datei vorher zu sichern!!

Das Script lautet sinngemäß (entnommen aus dem bereits angeführten Link!):

<script language="JavaScript" type="text/javascript">
<!--

function printMainFrame() {
Main_Frame ist der Name des Quelltext-Frames
parent.frames.Main_Frame.focus();
Diese Zeile ist fuer den Internet Explorer, da er
normalerweise trotz richtiger Angabe nur das fokusierte
Frame-Fenster druckt.
parent.frames.Main_Frame.print();
}

function writePrint() {
document.write("<p><a href=\"javascript:printMainFrame()\">Dr&uuml;cken Sie hier, um den Quelltext auszudrucken!<\/a><\/p>");
}

// -->
</script>

Angepasst muss es natürlich noch werden.

Gruß
Eisbein
Member: wescraven07
wescraven07 Feb 17, 2015 at 12:45:00 (UTC)
Goto Top
Im Moment habe ich noch keinen Zugriff auf dei PHP-datei, dafür muss uns ein externer Dienstleister, der die Grundinstallation geliefert hat, erst noch die SDK zur Verfügung stellen.
Member: eisbein
eisbein Feb 17, 2015 at 13:17:02 (UTC)
Goto Top
Im Moment habe ich noch keinen Zugriff auf dei PHP-datei, dafür muss uns ein externer Dienstleister, der die Grundinstallation geliefert hat, erst noch die SDK zur Verfügung stellen.

Irgendwie reden wir aneinander vorbei denke ich.

Du schreibst:

Ich habe einen Server bei mir im Netzwerk, der verschiedene Produktdaten hält.

Du wirst doch auf deinen Server zugreifen können und die dort befindlichen Dateien bearbeiten können?!

Es handelt sich also um eine Fremdsoftware!
Schau dir die Dateistruktur genau an, bevor du etwas vom Drittanbieter kaufst. Wenn dort PHP-Dateien vorhanden sind, kannst du sie auch ändern (Lizenzen und Copyright beachten!).

Du kannst mir auch eine PN senden, wenn du hier nichts öffentlich posten willst.

Gruß
Eisbein
Member: wescraven07
wescraven07 Feb 17, 2015 at 15:29:09 (UTC)
Goto Top
Lass es mich mal so formulieren. Es ist ein vorhandes System von einem Fremdanbieter, in das ich mich einarbeiten muss.Für diese Fremdsoftware gibt es aber eine SDK, mit der man das System anpassen und weiterentwickeln kann. ich werd mal sehen, wie und wann mir die Umgebung zur Verfügung gestellt werden kann...