gpt4 book ai didi

java - 如何添加指向PDF文档文件附件的链接

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:01 25 4
gpt4 key购买 nike

我正在使用 PDFBox,我想知道是否可以将文件添加为附件并链接到它?

我们使用下面的代码https://svn.apache.org/viewvc/pdfbox/tags/1.8.9/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/EmbeddedFiles.java举个例子:

        ...
// create a new tree node and add the embedded file
PDEmbeddedFilesNameTreeNode treeNode = new PDEmbeddedFilesNameTreeNode();
treeNode.setNames( Collections.singletonMap( "My first attachment", fs ) );
// add the new node as kid to the root node
List<PDEmbeddedFilesNameTreeNode> kids = new ArrayList<PDEmbeddedFilesNameTreeNode>();
kids.add(treeNode);
efTree.setKids(kids);
// add the tree to the document catalog
PDDocumentNameDictionary names = new PDDocumentNameDictionary( doc.getDocumentCatalog() );
names.setEmbeddedFiles( efTree );
doc.getDocumentCatalog().setNames( names );
...

最佳答案

您可以尝试使用“PDAnnotationFileAttachment”。它将提供注释。通过单击注释,您可以打开附件。

示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
import org.apache.pdfbox.pdmodel.graphics.color.PDGamma;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationFileAttachment;

public class FileAttach {

public static void main(String arg[]) throws IOException, COSVisitorException
{
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);

// Adding attachment
String caption = "DEMO.mp4";
// PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();
// final Map<String, PDComplexFileSpecification> embeddedFileMap = new HashMap<String, PDComplexFileSpecification>();

PDComplexFileSpecification fs = new PDComplexFileSpecification();
File f1 = new File("C:\\PDF\\DEMO.mp4");
FileInputStream fins1 = new FileInputStream(f1);
PDEmbeddedFile ef = new PDEmbeddedFile(doc, fins1 );
ef.setSubtype( "application/octet-stream" );
fs.setEmbeddedFile( ef );
fs.setFile(caption);
// embeddedFileMap.put(caption, fs);

// efTree.setNames(embeddedFileMap);

// PDDocumentNameDictionary nameDir = new PDDocumentNameDictionary( doc.getDocumentCatalog() );
// nameDir.setEmbeddedFiles( efTree );
// doc.getDocumentCatalog().setNames( nameDir );

int offsetX = 20;
int offsetY = 600;

//PDAnnotationLink txtLink = new PDAnnotationLink();
PDAnnotationFileAttachment txtLink = new PDAnnotationFileAttachment();
txtLink.setFile(fs);
PDGamma blueColor = new PDGamma();
blueColor.setB(1);
txtLink.setColour(blueColor);
txtLink.setAnnotationFlags(PDAnnotationFileAttachment.FLAG_LOCKED);

// Set the rectangle containing the link
PDRectangle position = new PDRectangle();
position.setLowerLeftX(offsetX);
position.setLowerLeftY(offsetY);
position.setUpperRightX(offsetX + 20);
position.setUpperRightY(offsetY + 20);
txtLink.setRectangle(position);

page.getAnnotations().add(txtLink);

doc.save("C:\\PDF\\Vishal\\aa.pdf");
doc.close();
}

}

关于java - 如何添加指向PDF文档文件附件的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com