Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Kreiranje PDF dokumenata od PHP-a sa PD4ML




(updated mart 08, 2010)

PD4ML je HTML-do-PDF konvertovanje Java biblioteke i command line tool. Sa jednostavnim omotom skripte se takođe radi u PHP okruženju. Aplikacija očekuje da je Java Runtime Environment 1.4 (ili iznad) instalirana na serveru.

1. Instalacija i test okruženja

Skinite PD4ML biblioteku sa PHP uzrocima:

http://pd4ml.com/pd4ml_php_wrapper.zip

Arhiva obuhvata dva PD4ML JAR fajla (PD4ML java biblioteke) i tri direktorijuma.
  • probe/ - sadrži skriptu za test okruženja, demo dokumenata i demo za konvertovanje skripti.
  • fonts/ - uključuje kineski font fajl za TTF ugradnu demonstraciju
  • cgi-bin/ - perl CGI skripte za slučajeve kad PHP konfiguracija ne dozvoljava da se izvrši java.
Upload-ujte raspakovani ZIP sadržaj na server i pobrinite se da je veb server učitao/ napisao dozvole za ciljan direktorijum a ciljani direktorijum je PHP-omogućen.

cgi-bin/ sadržaj direktorijuma treba da ode do cgi-bin/ direktorijuma veb servera. Nisu vam potrebne CGI skripte, ako PHP provera uspe.

Recimo da je ciljani direktorijum mapiran do http://myserver/pd4ml/ URL. Da bi testirali raspoređivanje, pokušajte da otvorite http://myserver/pd4ml/probe/index.php

Izlaz bi trebalo da izgleda kao na slici:



Ako bilo koji od test koraka nije uspeo, skripta štampa predloge šta bi moglo da se uradi kako bi se popravilo.

Ako su minimalni zahtevi ispunjeni, ona omogućava veze za demo skripte.

2. Prilagođavanje demo skripti

Demo skripte imaju sledeće prilagođavajuće tačke:
  • $evaluation promenljiva se menja između probnog (pd4ml_demo.jar) i ne-probnog (pd4ml.jar) PD4ML biblioteke. Postavite ga na "0" nakon što ste kupili i rasporedili pd4ml.jar
  • $jar promenljiva omogućava da odredite lokaciju PD4ML jar-ova. U primerima je postavljen na "../pd4ml_demo.jar" dokle god se biblioteka nalazi u matičnom direktorijumu.
  • $java promenljiva navodi Java izvršni put. Ako ste ispravno definisali $PATH na serveru, vrednost može da ostane "java". U suprotnom bi trebalo da precizirate tačan Java interpreter, odnosno lokaciju "/usr/local/bin/java".
  • $url je URL za konverziju u PDF.
3. PHP konfiguracija ne dozvoljava pokretanje spoljnih aplikacija

Kao poslednje sredstvo paket sadrži nekoliko CGI skripti. probe.pl je za testiranje okoline a pd4ml.pl je konvertor opšte namene. Konvertor očekuje izvorni dokument URL kao 'url' HTTP parametar.

Kopirajte skripte na CGI-BIN direktorijum servera i pobrinite se da fajl dozvole dozvoljavaju skriptama da rade. Na većini UNIKS-izvedenih sistema 755 fajl dozvola mod se očekuje.

Posle toga podesite $jar promenljive skripti da ukažu na stvarnu pd4ml(_demo).jar lokaciju. Izvršenje skripte iz PHP je više-manje identična za izvršenje pd4ml.php u primeru ispod.

4. "As PDF" dugme od nule

Ispod je uzorak implementacije "As PDF" dugmeta, koje možete da dodate na bilo koju PHP stranu njegovog PDF pogleda. Prvo moramo da kreiramo konvertor PHP (nazovimo ga pd4ml.php).

<?
  header("Pragma: cache");
  header("Expires: 0");
  header("Cache-control: private");
		
  if (array_key_exists('url', $_POST)) {
		
    header('Content-type: application/pdf');
    header('Content-disposition: inline');
    //header('Content-disposition: attachment; filename=test.pdf');
		
    // UNIX version
    passthru('java -Xmx512m -Djava.awt.headless=true ' . 
      '-cp pd4ml_demo.jar Pd4Cmd \'' . $_POST['url'] . '\' 800 A4'); 
		
    // Windows version
    // passthru('java -Xmx512m ' .
    // ' -cp pd4ml_demo.jar Pd4Cmd \"' . $_POST['url'] . '\" 800 A4');

  } else {
    echo 'invalid usage';
  }
?>
 


Konvertor koristi Pd4Cmd alat iz komandne linije, koja je deo biblioteke PD4ML počev od v3.6.0. Ako koristite stariju verziju PD4ML biblioteke, pogledajte previous version dokumenta.

Za posebnu skriptu pd4ml_demo.jar mora biti u istom direktorijumu gde je pd4ml.php (ili stvarna JAR putanja treba da se ogleda u "-cp pd4ml_demo.jar" deo komandne linije). Skripta očekuje da izvorni URL prolazi kao HTML forme promenljivoj pod nazivom 'url'.

Sledeći korak je da kreirate dugme na stranici na koju želite da dodate PDF.

<?php
// the function determines the current page URL
function curPageURL() {
  $pageURL = 'http';
  if ($_SERVER["HTTPS"] == "on") {
	$pageURL .= "s";
  }
  $pageURL .= "://";

  if ($_SERVER["SERVER_PORT"] != "80") {
    $pageURL .= "localhost:".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
  } else {
    $pageURL .= "localhost".$_SERVER["REQUEST_URI"];
  }
  return $pageURL;
}
?> 
		
<!-- ... your HTML code here ... -->

<!-- the button -->
<form action="pd4ml.php" method=post>
<input type=hidden value="<?php echo curPageURL(); ?>" name=url>
<input style="pd4ml-display: none; pd4ml-visibility: hidden"
    type=submit value="Get the invoice as PDF">
</form>


Minimalistički PHP kod u letu određuje URL stranice i skladišti ga kao skriveni url parametar.

Pritiskom na taster ćete poslati parametar do pd4ml.php i prisiliti PDF generaciju.

Korisne informacije:
  • Da bi rasporedili PDF generisanje rešenja morate da kopirate pd4ml.jar (ili pd4ml_demo.jar) i ss_css2.jar iz PD4ML distribucije i pd4ml.php fajl na bilo koji PHP-omogućen direktorijum vašeg veb servera.
  • PD4ML- specifičan style="pd4ml-display: none; pd4ml-visibility: hidden" isključuje dugme iz nastalog PDF rasporeda.
  • Ako primenite aplikaciju na serveru, koji hostuje više veb sajtova, "localhost" adresa servera se ne može razlikovati. Molimo Vas da koristite svoje stvarno ime servera u curPageURL() umesto toga.
  • Postoje dva mesta gde možete da kontrolišete PDF margine stranice. Uobičajena HTML margina dokumenata može da se promeni u BODY { margin: 0 } CSS imovine. PDF margine (umetci), se može izvršiti uticaj putem Pd4Php komandne linije parametra '-insets TOP,LEFT,BOTTOM,RIGHT,units'.
    Na primer: -insets 10,20,10,10,mm
  • Orijentacija strane se može menjati iz podrazumevanog PORTRET sa -orientation LANDSCAPE komandne linije parametara
  • PD4ML Pro feature: možete definisati headers/footers-e stranice sa HTML kodom kao sledeći
    < pd4ml:page.header><img src="logo.gif"> page $[page] of $[total]</pd4ml:page.header>
  • Ako vam je potrebno da generisani PDF ne bude poslat na klijentov pretraživač, već sačuvan na disku, dodajte '-out /generated/file/location/file.pdf' parametar komandne linije i uklonite header('Content-type: application/pdf'); direktiva u pd4ml.php.





Published (Last edited): 11-02-2013 , source: http://pd4ml.com/php.htm