2015-09-02 10 views
0

Я не знаю, как отключить загрузку и печать PDF в ZUML (язык разметки пользовательского интерфейса ZK). Нужно ли встроить настроенный просмотрщик PDF, поскольку я могу открыть файл PDF только с помощью тега iframe в ZK, и он использует просмотрщик браузера в формате pdf. Поэтому он делает работу по отключению печати и загрузки PDF еще сложнее.Отключить загрузку и печать PDF в ZK Framework

ответ

0

Есть два другие решения:

  • Преобразовать файл в HTML, изображение, или любой другой формат, который может быть непосредственно просмотреть в браузере. Это преобразование может быть «на лету» с использованием серверной части (написанной на Java в этом случае), или вы можете просто предварительно преобразовать все файлы в читаемые.

  • Другой подход, который является лучшим, заключается в использовании просмотрщик основе флэш-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)

0

Вопрос this Вопрос: Я обнаружил существование PDFObject, простого плагина javascript для вставки PDF-документов внутри страницы. Я сделал fiddle, чтобы вы могли видеть его в действии.

index.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; 
    } 

} 

Приветствия, Алекс