PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Problem mit Streams


mf_2
2007-02-23, 02:17:56
Hallo,

Ich muss von ein paar Internetseiten PDFs erstellen. Da habe ich dieses Script gefunden:
http://www.pdfwebx.com/pdf.aspx?url2pdf=http://www.google.com
Mit diesem Aufruf konvertiert es http://www.google.com in eine PDF.
Nun wollte ich das mittels PHP etwas automatisieren:


<?php

$char = array(":", "/", "?", "*", "|"); // Alles ersetzen, was Windows Dateinamen ned enthalten sollten ...
$replacestuff = "-"; // ... und mit einem - ersetzen

$url="http://www.google.com/"; // Test-URL, welche in eine PDF gespeichert werden soll

echo "<B>".$url."</B><P>"; // Ausgabe der URL, nur zur Kontrolle

$convertlink = "http://www.pdfwebx.com/pdf.aspx?url2pdf=".$url; // und jetzt bauen wir uns die URL für den Aufruf des Konverters

$url=str_replace($char,$replacestuff,$url); // die fraglichen Zeichen ersetzen


$handle = fopen ($convertlink, "r");
$newfile = fopen ($url.".pdf", "w");

$output = fread($handle,100000000);

fwrite($newfile, $output);

?>


Nun erstellt mir das Script zwar ne PDF, aber der Adobe Reader meint sie sei ungültig.
Wenn ich das ASP-Script manuell über den Firefox aufrufe, wird eine einwandfreie PDF erzeugt.
Ich habe aber noch nie mit Streams in PHP zu tun gehabt und vermutlich ist der Fehler sehr banal.

Könnt ihr mir weiterhelfen?

darph
2007-02-23, 09:52:20
Wie groß ist die PDF?

fopen auf URLs funktioniert nur unter bestimmten Umständen.

mf_2
2007-02-23, 10:09:10
3kb. Danke für den Tipp, ich habe nämlich mal verglichen und die PDF müsste 20kb groß sein! Ich habe jetzt auch die Lösung des Problems gefunden:

Man muss file_get_contents() verwenden.

Der Code sieht dann so aus:


<?php

$char = array(":", "/", "?", "*", "|");

$replacestuff = "-";

$url="http://www.google.com/";

echo "<B>".$url."</B><P>";

$convertlink = "http://www.pdfwebx.com/pdf.aspx?url2pdf=".$url;

$url=str_replace($char,$replacestuff,$url);

$newfile = fopen ($url.".pdf", "w");

$output = file_get_contents($convertlink);

fwrite($newfile, $output);

?>


Das funzt wie gesagt einwandfrei.