0

我已经使用ibex库来创建动态 pdf,但我现在想要的是将视频文件动态嵌入到 pdf 中,但不知道是否可行。如果可能,请建议ibex的方法,如果不可能,请建议另一个开源库。

4

2 回答 2

1

使用 IBEX 库无法嵌入视频。

请查看Ibex 程序员指南了解支持的功能。

于 2021-12-20T06:34:46.070 回答
0

PDF 文件格式本身支持在 PDF 文件内添加附件

但不幸的是,基于它的指南, ibex 还没有这样的 API 。

替代解决方案

选项1.-尝试此处指定的iTextiText API ,看起来像

  • 在 PDF 文件中添加附件
PdfFileSpec fs = PdfFileSpec.createEmbeddedFileSpec(pdfDoc, …);
pdfDoc.addFileAttachment("specificname", fs);
  • 添加链接以打开附件
PdfTargetDictionary target = new PdfTargetDictionary(PdfName.P);
target.setName("specificname");
PdfAction action = PdfAction.createGoToE(PdfExplicitDestination.createFit(1), false, target);

笔记。

  • Cost- 在您也免费分发软件的情况下,可以免费使用 iText。一旦您想在封闭源代码的专有环境中使用 iText,您就必须为使用 iText 付费。
  • Disclaimer- 我与 iText 没有任何联系

选项 2. Apache PDF Box- 遵循此处的示例

PDF 可以包含通过文件系统或指向远程位置的 URL 对外部文件的引用。也可以将二进制文件嵌入到 PDF 文档中。

PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();

//first create the file specification, which holds the embedded file
PDComplexFileSpecification fs = new PDComplexFileSpecification();
fs.setFile( "Test.txt" );
InputStream is = ...;
PDEmbeddedFile ef = new PDEmbeddedFile(doc, is );
//set some of the attributes of the embedded file
ef.setSubtype( "test/plain" );
ef.setSize( data.length );
ef.setCreationDate( new GregorianCalendar() );
fs.setEmbeddedFile( ef );

//now add the entry to the embedded file tree and set in the document.
Map efMap = new HashMap();
efMap.put( "My first attachment", fs );
efTree.setNames( efMap );
//attachments are stored as part of the "names" dictionary in the document catalog
PDDocumentNameDictionary names = new PDDocumentNameDictionary( doc.getDocumentCatalog() );
names.setEmbeddedFiles( efTree );
doc.getDocumentCatalog().setNames( names );

笔记

  • PDFBox在 Apache 许可证 2 下
于 2021-12-20T08:03:34.963 回答