2014-12-07 81 views
1

當我打開使用的iText例如PDF文檔,IText Example Code中嵌入視頻生成PDF文件,該文件顯示爲空白縮略圖和播放控制。iText的PDF庫:嵌入式視頻,如何顯示

  1. 是否有一種方式來顯示視頻時,不是在玩視頻縮略圖,所以文檔的讀者將有一些線索,在它裏面

  2. 視頻是否有插入的方式播放,暫停,停止按鈕等,以控制播放

  3. 視頻不會在所有的環境計劃,我只在我的Windows筆記本電腦與Acrobat Reader取得了成功。使用Mac和Linux時,視頻無法播放。另外,當在瀏覽器中打開PDF時,視頻無法播放。這是一個限制還是我錯過了一些東西?

  4. 當我打開生成的PDF並向下滾動到帶有視頻的頁面時,我收到一條警告 - 「禁用功能以避免安全風險」 - 是否有方法以不同方式嵌入視頻以避免看到此消息?

+0

這是一個古老的例子,基於ISO-32000-1。用於該實施例中的技術將在ISO-32000-2被棄用(由於爲出版物中2016)。如果您希望您的應用程序具有未來性,則最好使用RichMedia註釋而不是Screen註釋。需要注意的是,當我打開後,在Adobe Reader *的PDF *我表明我接受的安全風險在影片播放。 *在*我這樣做,* *前我點擊的註解,該文件確實顯示了一個空白頁。順便說一句:它可以創建一個利用iText一個富媒體註釋,但我沒有這樣的例子呢。 – 2014-12-07 12:49:41

+0

感謝Bruno Lowagie。我通過使用PDFXplorer查看內部結構並按照您的建議使用RichMedia註釋來逆向設計PDF文檔。但視頻並沒有顯示出來。我有點卡在這一點上。我無法在網絡上找到任何使用RichMedia Annotation嵌入視頻的示例。 – 2014-12-11 08:31:42

回答

0

根據Bruno Lowagie的建議,我使用RichMediaAnnotation編寫了以下代碼。但該視頻並未顯示在生成的PDF中。任何想法我在這裏失蹤?

Document document = new Document(); 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("richMedia.pdf")); 
    document.open(); 
    writer.setPdfVersion(PdfWriter.PDF_VERSION_1_7); 
    writer.addDeveloperExtension(PdfDeveloperExtension.ADOBE_1_7_EXTENSIONLEVEL3); 

    RichMediaAnnotation richMedia = new RichMediaAnnotation(writer, new Rectangle(10,10,150,75)); 

    PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(writer, RESOURCE, "VideoPlayer.swf", null); 

    PdfIndirectReference asset = richMedia.addAsset("VideoPlayer.swf", fs); 
    RichMediaConfiguration configuration = new RichMediaConfiguration(PdfName.VIDEO); 
    RichMediaInstance instance = new RichMediaInstance(PdfName.VIDEO); 
    RichMediaParams vars = new RichMediaParams(); 
    vars.setBinding(PdfName.BACKGROUND); 
    instance.setAsset(asset); 


    configuration.addInstance(instance); 
    PdfIndirectReference configRef = richMedia.addConfiguration(configuration); 

    RichMediaActivation activation = new RichMediaActivation(); 
    activation.setCondition(PdfName.XA); 
    RichMediaPresentation presentation = new RichMediaPresentation(); 
    presentation.setPassContextClick(PdfBoolean.PDFFALSE); 
    presentation.setTransparent(PdfBoolean.PDFFALSE); 
    presentation.setStyle(PdfName.WINDOWED); 
    RichMediaWindow window = new RichMediaWindow(); 
    window.setHeight(240, 800, 64); 
    window.setWidth(320, 800, 64); 
    presentation.setWindow(window); 
    presentation.setNavigationPane(PdfBoolean.PDFFALSE); 
    presentation.setToolbar(PdfBoolean.PDFFALSE); 
    activation.setPresentation(presentation); 
    activation.setConfiguration(configRef); 

    richMedia.setActivation(activation); 

    PdfAnnotation richMediaAnnotation = richMedia.createAnnotation(); 
    writer.addAnnotation(richMediaAnnotation); 

    document.close();