2010-01-16 13 views
0

Je sens juste que ma tête va exploser à moins que quelqu'un m'aider avec ce problème:Mal de tête avec ce problème de programmation. (PHP, images Tiff et imprimantes Duplex)

J'ai stocké une paire d'images TIFF (liées par une clé commune) pour chaque un des 100 000 registres d'Almos. Et je crée un script PHP qui reçoit une clé et l'écho de l'image tiff, de sorte que le navigateur retourne l'image tiff:

<?php 
    // Determine the primary key to relate with the image table 
    $numero_registro = $_GET['numero_registro']; 

    $imagen = $_GET['imagen']; 

    if ($numero_registro != "") 
    { 
     $con = mysql_connect("localhost","XXXXX","XXXXXX"); 
     if (!$con) 
      { 
      die('Problems with db: ' . mysql_error()); 
      } 

     mysql_select_db("XXXXX", $con); 

     $result = mysql_query("SELECT img FROM image_table i WHERE i.fk_civil_registry_code = $numero_registro"); 

     $i = 1; 
     while($row = mysql_fetch_array($result)) 
     { 
      if ($imagen == $i) 
      { 
       #img is a long blob field 
       $ext="tiff"; 
       header("Content-type: image/{$ext}"); 
       echo $row['img']; 
      } 
      $i++; 
     } 

     mysql_close($con); 
    } 

?> 

Ce fonctionne tout simplement et l'image tiff est affiché par le navigateur. Mais, ceci est une image tiff, donc est affiché solitaire (et vu en utilisant alternaTiff). Jusqu'à ce que sachez que ce n'était pas un problème, parce que j'avais juste besoin d'imprimer une seule image. Mais maintenant mon patron achète une grande imprimante recto-verso automatique, et la met sur son bureau, donc j'ai besoin d'un moyen de générer un pdf (de deux pages) et de mettre les deux images (echo $ row ['img'];) une seule page, afin qu'ils puissent imprimer le PDF.

Quelqu'un peut-il m'aider à faire cela?

Merci beaucoup.

Répondre

0

Au lieu d'un document pdf, vous pouvez également utiliser un document html avec page-break-before css properties. par exemple. essayez

<html> 
    <head><title>...</title></head> 
    <body> 
    <div><img src="http://sstatic.net/so/img/logo.png" /></div> 
    <div style="page-break-before:always;"><img src="http://sstatic.net/so/img/logo.png" /></div> 
    </body> 
</html> 

puis d'accéder à l'aperçu avant impression dans votre navigateur.

+0

Cela sonne bien. Mais le problème est que Tiff est affiché sur tout le navigateur (pas la page Web). Savez-vous peut-être à afficher deux tiffs au même endroit. – Sheldon

+0

Notez bien ce que vous demandez, mais voulez-vous dire quelque chose comme « .... »? – VolkerK

+0

Cela fonctionne avec JPEG et PNG mais pas avec TIFF car le navigateur ne sait pas comment le gérer. Il suffit de demander le téléchargement lors du montage du premier. Et avec un plugin comme AlternaTIFF, le plugin charge le premier aussi. – Sheldon

1

Êtes-vous coincé avec PHP? Si vous pouvez travailler avec ASP.NET, my company a un ensemble d'outils qui permet d'afficher et d'imprimer des images TIFF à partir de contrôles AJAX ainsi que du code qui va générer des fichiers PDF auto-impression. Si vous avez fait ce dernier, vous pouvez garder votre travail en PHP et vous connecter à un service .NET qui prend N fichiers tiff et génère un seul PDF imprimable.

Pour vous donner une idée de ce qui ressemblerait, le code C# pour prendre deux images TIFF et convertir au format PDF serait:

FileSystemImageSource images = new FileSystemImageSource(pathToTiff1, pathToTiff2); 
PdfEncoder encoder = new PdfEncoder(); 
encoder.CreateSelfPrintingPdf = true; 
encoder.Save(outputStream, images, null); 
+0

Je vais essayer, merci beaucoup. – Sheldon