0

我不知道如何在 ZUML(ZK 用户界面标记语言)中禁用 PDF 下载和打印。我是否需要嵌入自定义的 PDF 查看器,因为我只能使用 ZK 中的 iframe 标签打开 PDF 文件,并且它使用浏览器 pdf 查看器。因此,它使禁用打印和下载 pdf 的任务变得更加困难。

4

2 回答 2

0

这个问题之后,我发现了 PDFObject 的存在,这是一个简单的 javascript 插件,用于在页面中嵌入 PDF 文档。我做了一个小提琴,所以你可以看到它的实际效果。

索引.zul

<?script type="text/javascript" src="http://pdfobject.com/scripts/pdfobject.js"?>
<zk>
  <script type='text/javascript'>
  function embedPDF(_url){
    var myPDF = new PDFObject({ 
      url: _url
    }).embed('pdfContainer');  
  }
</script>

  <vlayout apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('pkg$.TestVM')" xmlns:w="http://www.zkoss.org/2005/zk/client">
    <listbox model="@load(vm.pdfUrls)">
      <template name="model" var="url">
        <listitem>
          <listcell label="@load(url)" />
          <listcell>
            <button label="load" onClick="@command('loadPdf', url=url)" />
          </listcell>
        </listitem>
      </template>
    </listbox>
    <vlayout xmlns:n="native">
      <n:object id="pdfContainer"></n:object>
    </vlayout>
  </vlayout>
</zk>

TestVM.java

import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.BindingParam;
import java.util.List;
import java.util.ArrayList;
import org.zkoss.zk.ui.util.Clients;

public class TestVM {

    List<String> pdfUrls;

    @AfterCompose
    public void afterCompose() {
      pdfUrls = new ArrayList<String>();
      pdfUrls.add("http://www.pdf995.com/samples/pdf.pdf");
      pdfUrls.add("https://partners.adobe.com/public/developer/en/xml/AdobeXMLFormsSamples.pdf");
      pdfUrls.add("https://www.iscp.ie/sites/default/files/pdf-sample.pdf");
    }

  @Command
    public void loadPdf(@BindingParam("url")String url) {
      Clients.evalJavaScript("embedPDF('"+ url +"')");
    }

  public List<String> getPdfUrls() {
    return pdfUrls;
  }

}

干杯,亚历克斯

于 2015-09-15T09:23:03.383 回答
0

还有另外两种解决方案:

  • 将文件转换为 HTML、图像或任何其他可以在浏览器中直接查看的格式。这种转换可以使用服务器端(在这种情况下用 Java 编写)即时进行,或者您可以将所有文件预转换为可读文件。

  • 另一种最好的方法是使用基于Flash 的 PDF 查看器(例如http://flexpaper.devaldi.com/)。这很容易、灵活并且不需要编写服务器端代码。许多文档共享站点都使用这种方法(例如http://www.scribd.com/http://www.slideshare.net/http://www.docstoc.com/

(仅供参考,如果您不想禁用下载pdf文件,有几个解决方案:http: //zkfiddle.org/sample/1dnhepc/11-PDF-viewer
http://zkfiddle.org/sample/3ojd4og/ 1-PDF-Viewer-in-ZK-using-Iframe#source-2 )

于 2015-09-02T14:34:55.370 回答