【发布时间】:2013-07-16 12:03:48
【问题描述】:
我已经阅读了文档和示例,但我很难将它们放在一起。我只是想获取一个测试 pdf 文件,然后将其转换为字节数组,然后获取字节数组并将其转换回 pdf 文件,然后将 pdf 文件创建到磁盘上。
这可能没有多大帮助,但这是我目前所得到的:
package javaapplication1;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
public class JavaApplication1 {
private COSStream stream;
public static void main(String[] args) {
try {
PDDocument in = PDDocument.load("C:\\Users\\Me\\Desktop\\JavaApplication1\\in\\Test.pdf");
byte[] pdfbytes = toByteArray(in);
PDDocument out;
} catch (Exception e) {
System.out.println(e);
}
}
private static byte[] toByteArray(PDDocument pdDoc) throws IOException, COSVisitorException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
pdDoc.save(out);
pdDoc.close();
} catch (Exception ex) {
System.out.println(ex);
}
return out.toByteArray();
}
public void PDStream(PDDocument document) {
stream = new COSStream(document.getDocument().getScratchFile());
}
}
【问题讨论】:
-
PDF 是一个字节数组,只需读取二进制文件即可。但也许你的意思不同?
-
由于某种原因,当我将 PDF 转换为字节数组然后再转换回 PDF 时,当我尝试打开新创建的 PDF 时,它说它已损坏。所以我决定使用 pdfbox 来避免这种情况。是否可以跳过 pdfbox 并执行此操作并返回工作 pdf?
-
你的最终目标是什么?我看不到将 PDF 转换为字节数组并返回的任何自给自足的用途。
-
好吧,我正在测试是否可以将 PDF 存储在数据库中。我知道应该使用文件系统进行存储,但我还是想将它存储在数据库中。我能做到这一点的唯一方法是它的形式是 byte[] 数组
-
只需将其作为文件流读取即可。我真的看不出它不应该起作用的原因。
标签: java pdf pdf-generation pdfbox