0

我只是觉得我的头会爆炸,除非有人帮我解决这个问题:

我为 almos 100.000 个注册表中的每一个存储了一对 TIFF 图像(由一个公共密钥相关)。我创建了一个接收密钥并回显 tiff 图像的 PHP 脚本,因此浏览器返回 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);
    }

?>

这只是工作,浏览器显示 tiff 图像。但是,这是一个 tiff 图像,因此会单独显示(并使用 alternaTiff 查看)。直到知道这没问题,因为我只需要打印一个图像。但是现在我的老板买了一台大型自动双面打印机,并把它放在他的办公室里,所以我需要一种方法来生成一个 pdf(两页)并将两个图像(echo $row['img'];)每一个都放在单页,因此他们可以打印 PDF。

谁能帮我做到这一点?

非常感谢。

4

3 回答 3

1

你被 PHP 困住了吗?如果您可以使用 ASP.NET,我的公司有一组工具可以显示和打印来自 AJAX 控件的 TIFF 图像以及生成自打印 PDF 文件的代码。如果您使用后者,您可以将您的 Web 工作保留在 PHP 中,并连接到一个 .NET 服务,该服务需要 N 个 tiff 文件并生成一个可打印的 PDF。

为了让您了解它的外观,获取两个 tiff 图像并转换为 PDF 的 C# 代码将是:

FileSystemImageSource images = new FileSystemImageSource(pathToTiff1, pathToTiff2);
PdfEncoder encoder = new PdfEncoder();
encoder.CreateSelfPrintingPdf = true;
encoder.Save(outputStream, images, null);
于 2010-01-20T16:06:23.340 回答
1

所以你想生成一个两页的 PDF,每页上都有一个 tiff 图像?

也许以下链接会很有趣:

http://www.fpdf.org/

http://kevin.vanzonneveld.net/techblog/article/php_tiff2pdf/

然后您可以将 PDF 刷新到浏览器。

于 2010-01-16T15:24:51.743 回答
0

除了 pdf 文档,您还可以使用带有page-break-before css 属性的 html 文档。例如尝试

<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>

然后转到浏览器中的打印预览。

于 2010-01-16T15:40:35.557 回答