PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   PDF-Datei speichern (http://www.selfphp.de/forum/showthread.php?t=17566)

Muchte 02.09.2007 15:36:38

PDF-Datei speichern
 
Hallo nochmal!
Wie kann man, wenn url file access disabled, eine (PDF-)Datei von einem anderen Server speichern. Geht das mit fsockopen irgendwie?

Gruß, Muchte

conmunich 02.09.2007 18:57:51

AW: PDF-Datei speichern
 
nein, fsockopen öffnet nur eine verbindung, bzw einen dateizeiger. aber die datei musst du dann immer noch per fgets usw... lesen.

ich nehme mal an, auf einem server, auf dem url fopen disabled ist, wird fsockopen erst recht nicht verfügbar sein.

Muchte 02.09.2007 21:14:08

AW: PDF-Datei speichern
 
Doch, fsockopen funktioniert, ich empfange jetzt auch Daten, u.a. auch die PDF-Datei, jedenfalls sind ne Menge kryptischer Zeichen dabei. Mein Problem ist jetzt, wie ich aus den Daten die PDF-Datei extrahiere bzw. konstruiere.

Muchte 04.09.2007 19:32:27

AW: PDF-Datei speichern
 
Moin! Ist das zu wirr, was ich geschrieben habe? Ich versuchs nochmal.

Das ist der Code, mit dem die Verbindung hergestellt wird und die Daten werden:
PHP-Code:

$fp=fsockopen($host,80$errno$errstr30);
if (!
$fp)
   echo 
"$errstr ($errno)<br />\n";

else {
   echo 
"<br>PDF-Datei aufrufen...";
   
fwrite($fp"GET $link_pdf HTTP/1.0\r\n");
   
fwrite($fp"Host: $host\r\n");
   
fwrite($fp"Connection: close\r\n\r\n");

   
$datei=fopen("../pdf/pdf_datei.pdf"w);
   while (!
feof($fp)) {
      
$zeile fgets($fp1024);
      
fputs($datei$zeile);
   }
   
fclose($datei); 

Empfangen tue ich so etwas:

HTTP/1.1 200 OK
Date: Tue, 04 Sep 2007 17:24:30 GMT
Server: Apache/1.3.37 (Unix) DAV/1.0.3 mod_ssl/2.8.28 OpenSSL/0.9.8d
Last-Modified: Tue, 04 Sep 2007 17:21:21 GMT
ETag: "7f966-304c-46dd9411"
Accept-Ranges: bytes
Content-Length: 12364
Connection: close
Content-Type: application/pdf

%PDF-1.3
%ª«¬*
4 0 obj
<< /Type /Info
/Producer (null) >>
endobj
5 0 obj
<< /Length 3026 /Filter /FlateDecode
>>
stream
x�œ[ËrÛ8Ýû+ŽLªÆ4Ä�ÞÅm;ÎÃ��¶b/Ú³ -Øf�¢<��Ì€æãà$%õTªË�p.��sî=�ΊG'�xB#0�>õÏã�<Á ��àñÇt3�LŠóÉ�ïPô~r��ï~w¶.fb�gÏi÷»ót.�îå·E9{?ùçdúùèbzô¯jøvXJ#Ðr N& ��LJ1y:úÇÑÙTG�b�åû�à&�ß×ÅëJH���LÞÝŒe"&R!RQÿ�ä§ �£�(æpò8?:ù4��óE�vr Û�h�qØ|Å5.���ÂRJ%êÇîI¯Óòc&rc~JQOÄ<�*L|ª@V¯ <M��71 �Ü`" óöék�0Ï ä�ÅÕ�5�æÕ¬�Sâ?ÆQ7ãckü/iŸÅkV>Ÿ�B�ÖMõ$ ©b§À�ª^õÉ�Ò�ÅÐUZ�&BBe(��hÓ�ØËó�±é�L(@º�¿�r�ÏõJA�ÄcÐ!�Ö S }ºŸé0>æi¡Ò2ÊF��®ÍøÌ�ú¥ÿC!³�ÒÇ�jS@�8�¢$iPž�rþÙ@±rï.ËóìñEÁ��η! q�"BÛ
��
�²úh¢M¬h¯§·FÂ.�+1[u¿øô©
�$žJ�&X��ËX_°.öš>[öP��*ÚÍù.�U¹x«·@»|È�Ïø�6!öÌ
B,�Yb�5 #ë
znG
ägÌäÚW|ÊÏ=³%�!�1÷�ítjlçi¹È�³EùÔd; Év
âfWkEÎÒ�1Weö°.�« `��m/o��ý"�ÿ-m¶T Ïj 7Ñ�{âlœÅC�Á� �ÐnªµhÂ�Ä«E.·aù�*ä�a�,�Æ º)�O&Ê<3*�i¶TlXÙ²Ò-@�µoKµž9ØÁ7�Æry8Æ·Ü\<��Ùr�ŠeŸXgËãË2]çéZÎr5Á��:��å¢@Î�tŒŠ
...
...
...

Wie kann man daraus eine pdf-Datei machen? Muß man das noch irgendwie decodieren?

Gruß, Muchte

defabricator 04.09.2007 21:17:36

AW: PDF-Datei speichern
 
Bis zur ersten leeren Zeile per fgets() und wegschmeißen*. Das sind die HTPP Header.
Danach mit fread() weiterlesen und in die Datei schreiben.

*) Eigentlich ja parsen und darauf reagieren. Aber bei
Zitat:

Accept-Ranges: bytes
Content-Length: 12364
Connection: close
sollte es erstmal auch so gehen.

Muchte 12.09.2007 23:53:23

AW: PDF-Datei speichern
 
Ich hab das jetzt mal so versucht, bekomme das aber nicht hin. Er fängt mit fread zwar richtig an
$inhalt = fread($fp, 2000);
, irgendwann bricht er aber ab und empfängt die Daten nicht bis zu Ende, auch wenn ich den byte-Wert hochsetze.




Mach ich das Zeilenweise mit fgets, statt fread, geht es so teilweise:
PHP-Code:

   while (!feof($fp)) {
       
$zeile fgets($fp1024);
      echo 
$zeile;
      if (
strstr($zeile"PDF-1." ))
         
$q=1;
      if (
$q==1)
         
fwrite($datei$zeile);
   } 

Die Datei, auf die ich im Script dann gleich verlinke, kann von nem PDF-Reader nicht gelesen werden (der Link stimmt). lade ich die Datei bei mir auf den PC hoch, gehts. ??? Die datei, in die ich geschrieben wird, vorher mit "wb" statt nur "w" zu öffnen bringt nichts.

defabricator 13.09.2007 01:42:35

AW: PDF-Datei speichern
 
Schau doch mal in die Datei rein.

CIX88 13.09.2007 08:03:00

AW: PDF-Datei speichern
 
> Datei von einem anderen Server speichern

Also dazu benutze ich im Reader Datei -> als Kopie speichern ...
Alles andere klingt nach klauen.

Sonst gibt es noch elegante Lösungungen mit CURL.

Muchte 13.09.2007 10:16:54

AW: PDF-Datei speichern
 
Zitat:

Zitat von defabricator (Beitrag 106670)
Schau doch mal in die Datei rein.

Das sieht halt so aus wie oben ab

%PDF-1.3
%ª«¬*
4 0 obj
<< /Type /Info
/usw.

nur das mit fread nicht alles empfangen wird, aber mit fgets in der Schleife. Kann es sein, dass fread ein limit vom Server hat, das kleiner als 12500 ist?

defabricator 13.09.2007 12:11:06

AW: PDF-Datei speichern
 
Zitat:

Zitat von Muchte (Beitrag 106678)
nur das mit fread nicht alles empfangen wird, aber mit fgets in der Schleife. Kann es sein, dass fread ein limit vom Server hat, das kleiner als 12500 ist?

Nein. Und ich sehe in dem Code kein fread.

Zitat:

Zitat von CIX88
Sonst gibt es noch elegante Lösungungen mit CURL.

Bin ich auch für.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:24:15 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.