首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将pdf转换成byteArray - byteArray到String - String到byteArray - byteArray到pdf

将pdf转换成byteArray - byteArray到String - String到byteArray - byteArray到pdf
EN

Stack Overflow用户
提问于 2017-11-13 09:02:30
回答 1查看 5.5K关注 0票数 2

下面的代码适用于文本文件,但不适用于pdf文件。我的文件里有英文和希腊文。我尝试将pdf文件转换为byteStream,将byteStream转换为String格式,以便将其保存在database中。之后,我尝试从保存的字符串创建pdf

有什么帮助吗?

代码语言:javascript
复制
public class PdfToByteStream {

    public static byte[] convertDocToByteArray(String path)throws FileNotFoundException, IOException{
        File file = new File(path);

        FileInputStream fis = new FileInputStream(file);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];
        try {
            for (int readNum; (readNum = fis.read(buf)) != -1;) {
                bos.write(buf, 0, readNum);
            }
        } catch (IOException ex) {
            Logger.getLogger(genJpeg.class.getName()).log(Level.SEVERE, null, ex);
        }
        byte[] bytes = bos.toByteArray();
        return bytes;
    }

    public static void convertByteArrayToDoc(String path, byte[] bytes)throws FileNotFoundException, IOException {
        File someFile = new File(path);
        FileOutputStream fos = new FileOutputStream(someFile);
        fos.write(bytes);
        fos.flush();
        fos.close();
    }

    public static void main(String[] args) throws FileNotFoundException, IOException {
        byte[] bytes = convertDocToByteArray("path/test.pdf");

        String stream = new String(bytes, "UTF-8");//ok for txt
        byte[] newBytes = stream.getBytes(Charset.forName("UTF-8")); // ok for txt

        convertByteArrayToDoc("path/newTest.pdf", newBytes);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-13 09:32:06

如果您使用Base64编码,您将能够将PDF转换成一个字符串并返回。

下面是需要修改的代码的相关部分:

代码语言:javascript
复制
import java.util.Base64;

...

public static void main(String[] args) throws FileNotFoundException, IOException {
    byte[] bytes = convertDocToByteArray("some.pdf");
    String stream = Base64.getEncoder().encodeToString(bytes);
    byte[] newBytes = Base64.getDecoder().decode(stream);
    convertByteArrayToDoc("some_new.pdf", newBytes);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47260421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档