将每个PDF页面内容显示为不同的div

时间:2017-05-27 04:57:57

标签: php jquery html pdf

我有一本名为 php_5_for_dummies.pdf 的书。
它的总页数是5.
我想以不同的div显示每个PDF页面内容。

  

示例:它应该显示如下:

  1. <div class='1'>Content of pdf page 1 </div>
  2. <div class='2'>Content of pdf page 2 </div>
  3. <div class='3'>Content of pdf page 3 </div>
  4. <div class='4'>Content of pdf page 4 </div>
  5. <div class='5'>Content of pdf page 5 </div>
  6. 到目前为止,我已经做了。

    function pdf_page_no($filepath){
        $fp = @fopen(preg_replace("/\[(.*?)\]/i", "",$filepath),"r");
        $max=0;
        while(!feof($fp)) {
            $line = fgets($fp,255);
            if (preg_match('/\/Count [0-9]+/', $line, $matches)){
                preg_match('/[0-9]+/',$matches[0], $matches2);
                if ($max<$matches2[0]) $max=$matches2[0];
            }
         }
        fclose($fp);
        if($max==0){
            $im = new imagick($filepath);
            $max=$im->getNumberImages();
        }
    
        return $max;
    }
    
    $filename = "php_5_for_dummies.pdf";
    $total_page_no  = pdf_page_no($filename);
    
    for ( $i=0 ; $i >= $total_page_no; $i++ ) {
    
        echo "<div class='{$i}'>";
           // here should display the content from page 1 of pdf
        echo "</div>";
    
    }
    

1 个答案:

答案 0 :(得分:2)

PDF不是与HTML,SVG或典型图像格式(JPG,PNG,TIF等)相同的本机Web格式。 PDF的显示取决于浏览器,通常是一个完整的页面&#34; item,不是&lt; div&gt;等页面的元素。根据浏览器配置,PDF有时根本不会显示在浏览器中 - 例如,我将浏览器配置为使用浏览器外部的Adobe Reader打开PDF以提供更多选项,更高质量的打印等。反之亦然问题 - 典型的HTML页面打印效果不好,解决方案是转换为PDF以实现一致的WYSIWYG打印。但大多数网站都不这样做,因为没有大量的编程就没有简单的方法。任何能够真正解决潜在问题的人都会发大财。好吧,实际上可能根本没有赚到多少钱,因为这么多软件实际上是免费的,但我离题了......

我见过的解决方案:

a)将PDF页面转换为图形图像。您可以使用ImageMagick转换程序执行此操作。然后显示&lt; img&gt;在每个&lt; div&gt;里面。缺点是分辨率仅限于图像大小,而不是完全可扩展(且易于打印)的PDF页面。我已经通过图像点击进行预览,生成了与浏览器相关的实际PDF下载/显示。

b)构建包含PDF的页面。我相信我已经在一些公用事业账单网站上看到了这一点。在框架内部,页面被视为整页,因此如果浏览器支持内部PDF查看,那么这将起作用。