2016-04-14 20 views
0

Dieses Skript wird eine PDF in einzelne Seiten aufteilen und speichern. Wenn ich auf ein Bild klicke, ändert sich die CSS-Klasse und wird schwarz und weiß.Php - Javascript - Woher weiß ich, welche Seiten in Farbe und welche in Schwarz-Weiß sind?

Jetzt ist das Problem für mich zu verstehen, welche und wie viele Seiten sind in Farbe.

Was ist der beste Ansatz, um es zu verstehen? tk

<?php 
 
$pdf='aaa.pdf'; 
 
$image = new Imagick(); 
 
$image->pingImage($pdf); 
 
$x = $image->getNumberImages(); 
 
echo " 
 
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<script> 
 
function change_autorefreshdiv(id){ 
 
    var NAME = document.getElementById(id) 
 
    var currentClass = NAME.className; 
 
    if(currentClass == 'bn'){ 
 
     NAME.className = 'colore'; 
 
    } else { 
 
     NAME.className = 'bn'; 
 
    } 
 
} 
 
</script> 
 

 
<style type='text/css'> 
 
.bn{ 
 
     -webkit-filter: grayscale(100%); 
 
     -moz-filter: grayscale(100%); 
 
     -ms-filter: grayscale(100%); 
 
     -o-filter: grayscale(100%); 
 
     filter: grayscale(100%); 
 
} 
 
body { 
 
     background: #000; 
 
    } 
 
img {padding:5px;} 
 
</style> 
 

 
<body>"; 
 
for ($i=0; $i <= $x; ++$i){ 
 
\t $im = new Imagick(); 
 
\t $im->setResolution(20, 20); 
 
\t $im->readImage(''.$pdf.'['.$i.']'); 
 
\t $im->setImageFormat('jpeg'); 
 
\t $im->setImageCompression(imagick::COMPRESSION_JPEG); 
 
\t $im->setImageCompressionQuality(100); 
 
\t $jpegpath = 'jpeg/'.$pdf.'['.$i.'].jpeg'; 
 
\t $im->writeImage($jpegpath); 
 
\t echo " 
 
    <img width='170px' height='220px' 
 
    src='$jpegpath' id='$i' class='colore' 
 
    onclick='change_autorefreshdiv($i)'></img>"; 
 
} 
 
echo " 
 
    </body>";
img script in browser

+0

Möchten Sie das _Javascript_ wissen, welches ist, oder das _PHP_? –

+0

das PHP zu wissen! –

+0

Es gibt einfach nicht genug hier für uns zu helfen. Wollen Sie damit sagen, dass PHP verstehen soll, ob die Seiten der PDF-Datei schwarz-weiß sind oder der Benutzer auf ein Bild klickt? Warum wechselt es überhaupt von Farbe zu b + w? Was ist das Ziel hier? – larsAnders

Antwort

0

PHP läuft auf dem Server, die Ergebnisse (dessen Ausgang) auf der ganzen Linie an denBrowser sendet, dann Anschläge laufen, es ist erledigt.
Der Browser empfängt die Ausgabe, dann rendert der HTML-Code und führt das Javascript aus. Der PHP-Code ist aus dem Spiel an diesem Punkt.

Für die PHP (der Server, wirklich) zu wissen, was ist der Browser wird es sagen müssen, indem Sie diese Fakten zurück an den Server.
Dies könnte durch eine Form eingereicht werden, oder eine Ajax Post; ajax könnte den Server einmal am Ende oder kontinuierlich informieren, wenn jede "Seite" ausgewählt (angeklickt) und nicht ausgewählt wird.

Entweder Formular submit oder Ajax, dies wird wahrscheinlich eine POST an Ihren Server wie http://yourserver.com/yourapplication/process_selections.php sein - oder könnte die gleiche .php-Datei verwenden, die dies an erster Stelle gesendet.
Die wichtige Sache zu verstehen ist, dass dies ist völlig getrennt aus dem PHP-Code, den Sie in Ihrer Frage geschrieben. Das Code ist fertig ausgeführt. Selbst wenn Sie zurück in die gleiche PHP-Datei posten, ist das ein neuer Aufruf, so dass keine der Variablen, die Sie vorher gesetzt hatten, noch dort verwendet werden können.

Sie müssen sich für eine Strategie entscheiden, um die Informationen an den Server zurückzusenden, und sobald Sie sie haben, werden Sie wahrscheinlich noch weitere Fragen haben - fragen Sie diese später als spezifische Fragen; das Thema ist zu breit, um in einer Antwort auf diese Frage zu decken.


Tipp: im Browser werden Sie wahrscheinlich wollen Sie Javascript verwenden, um alle Elemente auszuwählen, mit dem .bn und/oder die .colore Klasse und diejenigen, zurück an den Server senden Informationen über.

+0

ok, danke für die Antwort, also die 2 einfachsten Möglichkeiten sind: 1) ein Formular erstellen (mit checkboxes) in dem ich die Bilder ablege (php) oder 2) ich zähle wie oft die Klasse css bn mit der entsprechenden id erscheint (Anzahl der Seiten) (Javascript)? Für die zweite Option (Ihr Tipp) haben Sie Vorschläge? tk –

+0

Wenn Sie keine Erfahrung mit AJAX haben, möchten Sie vielleicht mit einem '

' bleiben - aber Sie _können_ die Checkboxen ausblenden und sie mit Javascript hinter den Kulissen überprüfen, wenn das Seitenbild angeklickt wird, oder Sie können sie anzeigen lassen Aktivieren Sie dann das Kontrollkästchen und ändern Sie die Bildklasse ('.bn' oder' .colore'), wenn _im_Kontrollkästchen oder dem Bild geklickt wird. Oder Sie verwenden das Bild als Kontrollkästchen, indem Sie auf das Bild klicken. Siehe meine Geige: https://jsfiddle.net/stephen61/pa9s4ktr/ –

+0

Perfekt! Vielen Dank!! –

Verwandte Themen