在Joomla中显示带有模块Div的PDF

时间:2017-09-22 17:21:47

标签: php pdf joomla3.0

我正在尝试在自定义模块中的Div中显示PDF,但我得到一个奇怪的显示而不是PDF。

我将代码编写为一个简单的PDF显示,以便在Joomla之外进行测试,并且工作正常:

<?php
  $fileName = "http://www.cbbfl.com/Rules_Thurs_Night_Mixed.pdf";
  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $fileName . '"');
  header('Content-Transfer-Encoding: binary');
  @readfile($fileName);
?>

您可以在http://www.cbbfl.com/pdf_test.php

查看它是否正常运行

因此,接下来我尝试将其合并到自定义模块中。目标是在左侧的div中创建一个PDF链接列表(称为“doc_list”),然后在单击链接时,它应该在右侧div中显示PDF(称为“文档”)

以下是代码:

<div id="report">
    <div id="doc_list" class="inline">
        <a class="test">Test PDF</a>
    </div>
    <div id="document" class="inline">

    </div>
</div>
<script>
jQuery(document).ready(function() {
    jQuery(".test").on("click", function() {
        var link = "http://www.cbbfl.com/pdf_test.php";
        jQuery("#document").load(link);
    })
});
</script>

我已经使用Joomla进行了设置,您可以在以下位置查看结果: http://www.cbbfl.com/joomla33/index.php/pdf-test

如果单击链接(并等待加载文件),您将看到乱码而不是PDF:

%PDF-1.5% 10 obj&lt;&gt;&gt;&gt; endobj 2 0 obj&lt;&gt; endobj 3 0 obj&lt;&gt; / ProcSet [/ PDF / Text / ImageB / ImageC / ImageI]&gt;&gt; / MediaBox [0 0 612 792] / Contents 4 0 R / Group&lt;&gt; / Tabs / S / StructParents 0 GT;&GT; endobj 4 0 obj&lt;&gt;流x &lt; r 8 ? Qڊ u* : l dk&amp; Y g 8d / | / = S| wC ~ ^9 &amp; ʖ vy ,N Rңң “] h ” k L ? | , \〜 HNE y! % c[- n { 2Is&ͱə2yHEȀG%)/〜; ���(B/�A�)���ː�YL����|������k��!�Ǻ>ޏ9 { - -H $g g$ “ [ u @' # Ww ! 9[X #u3 x J1 J O&amp;R3 y~0G d E)〜 ; [ {S , BT=i “JHR Һ l/ //0 vuZ P ? TЛia〜,Eqk \&安培; ^ V(ϘFؤ5" MB)(7N(= Y݂ ރϫ# 83{〜 9x8 % j ) p 4 җ0 /: | &gt; FX ꃠRH Pk` X 恶#ɲ “hqD r g h Г L 5 q 6 ^ VK :sôş O3

任何有助于解决此问题的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为默认Joomla!将响应标头设置为&#39;内容类型:text / html&#39;,这样您就可以看到PDF文件版本,然后是二进制幻数(25 50 44 46),各种元数据,然后是二进制流。< / p>

尝试查找&#34;使用AJAX调用显示PDF&#34;在SO上。如果您尝试严格通过Joomla进行操作,则需要创建组件扩展(或使用提供PDF文件的组件扩展),以便您有一个端点URI来创建链接。

答案 1 :(得分:1)

感谢您输入书法io,但我找到了更优雅的解决方案。

我没有使用php页面加载pdf文件(带标题),而只是更改了添加链接的代码:

jQuery(document).ready(function() {
    jQuery(".test").on("click", function() {
        var link = "http://www.cbbfl.com/pdf_test.php";
        jQuery("#document").load(link);
    })
});

将PDF页面嵌入:

jQuery(document).ready(function() {
    jQuery(".doc_link").on("click", function() {
        var link = jQuery(this).attr("data-link")+"#view=FitH";
        jQuery("#document").empty();
        var code = "<embed id='pdf' type='application/pdf' style='width:1000px; height:600px;' src='"+link+"'></embed>";
        jQuery("#document").append(code);
    });
});

这就像一个魅力。我在Chrome,Firefox和Edge中测试了它。所有允许用户查看,打印和保存PDF(Edge仅允许保存除外)。