[PHP] fwrite temp-file naar file voor kopie-opslag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben druk met mijn PDF generator script aan de slag en probeer een kopie op te slaan van de PDF die ik genereer.

Het stukje code dat de PDF vult is de volgende:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$file_name = bestand.pdf;
$fp= fopen( $fdf_fn, 'w' );



if( $fp ) {



  fwrite( $fp, $fdf );
  fclose( $fp );
    header( 'Content-type: application/pdf' );
    header('Content-Disposition: attachment; filename="'.$file_name.'"'); //ter download aanbieden

  passthru( '/usr/local/bin/pdftk formtx.5.pdf fill_form '. $fdf_fn. ' output - flatten' );

}


Nu is mijn plan om deze PDF ook lokaal op te slaan, dit blijkt alleen niet te werken.

Een hele simpele code hier van het forum zou dit moeten doen:

PHP:
1
2
3
4
$myFile = "test.pdf";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $temp);
fclose($fh);


NU dacht ik dit stuk code gewoon onder mijn code te kunnen plakken zoals hier, maar het wegschrijven wordt genegeerd en tevens wordt mijn tempory file niet gevuld. Haal ik dit stuk weg dan werkt het weer.


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$file_name = bestand.pdf;
$fp= fopen( $fdf_fn, 'w' );



if( $fp ) {



  fwrite( $fp, $fdf );
  fclose( $fp );
    header( 'Content-type: application/pdf' );
    header('Content-Disposition: attachment; filename="'.$file_name.'"'); //ter download aanbieden

  passthru( '/usr/local/bin/pdftk formtx.5.pdf fill_form '. $fdf_fn. ' output - flatten' );

$makecopy = "passthru( '/usr/local/bin/pdftk formtx.5.pdf fill_form '. $fdf_fn. ' output - flatten' )";
$copyfile = "test.pdf";
$fh = fopen($copyfile, 'w') or die("can't open file");
fwrite($fh, $makecopy);
fclose($fh);

}



De code is dus fout, ik moet mijn errorhandling nog even aanzetten in dit bestand bedenk ik me net. Maar is dit wel mogelijk op deze manier ?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

PHP:
1
$file_name = "bestand.pdf";

?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CodeCaster schreef op zaterdag 05 mei 2007 @ 16:28:
PHP:
1
$file_name = "bestand.pdf";

?
Ja heb ik wel zo staan, hier even verkeerd gegaan met kopiëren en bewerken :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Heb je wel de benodigde rechten om in bestanden te schrijven én om bestanden die nog niet bestaan aan te maken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb de folder op 777 gezet om te testen en gebruik tevens het path vanaf de root tot de folder waar ik wil zijn om problemen te voorkomen.

Een ander simpel script kan ook files schrijven in een andere directory waar ik qua chmod niets aangepast heb.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Kijk eens naar http://www.php.net/copy :?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
PHP:
1
2
3
4
5
$makecopy = "passthru( '/usr/local/bin/pdftk formtx.5.pdf fill_form '. $fdf_fn. ' output - flatten' )";
$copyfile = "test.pdf";
$fh = fopen($copyfile, 'w') or die("can't open file");
fwrite($fh, $makecopy);
fclose($fh);
Die code zet gewoon de waarde van $makecopy in test.pdf, zonder iets uit te voeren. Wat je wilt, is de uitvoer van dat commando in een bestand hebben. Dat kun je met de > doen:
PHP:
1
shell_exec('/usr/local/bin/pdftk formtx.5.pdf fill_form '. $fdf_fn. ' output - flatten > outputfile.pdf');

Je hele script zou dan worden:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$file_name = bestand.pdf;
$fp= fopen( $fdf_fn, 'w' );

if( $fp ) {
  fwrite( $fp, $fdf );
  fclose( $fp );

  shell_exec( '/usr/local/bin/pdftk formtx.5.pdf fill_form '. $fdf_fn. ' output - flatten > ' . $file_name);

  header( 'Content-type: application/pdf' );
  header('Content-Disposition: attachment; filename="'.$file_name.'"'); //ter download aanbieden
  readfile($file_name);
}

[ Voor 11% gewijzigd door GlowMouse op 05-05-2007 17:30 . Reden: gekke indention verholpen ]

Pagina: 1