You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java将PDF文件转换为十六进制格式?

将PDF转换为十六进制的Java实现

没问题,这其实就是把PDF文件的字节内容转换成十六进制字符串的操作,用Java的基础IO API就能轻松搞定,甚至不需要依赖任何第三方库。我给你准备了两种场景的实现方案:

方案1:适合小体积PDF(一次性读取)

这种方法会把整个PDF文件的字节一次性加载到内存中,转换效率高,适合文件不大的情况:

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

public class PdfToHexConverter {
    public static void main(String[] args) {
        // 替换成你的PDF文件路径
        String pdfFilePath = "your/pdf/file/path.pdf";
        try {
            String hexResult = convertPdfToHex(pdfFilePath);
            // 打印结果或者写入文件都可以
            System.out.println("转换后的十六进制内容:\n" + hexResult);
        } catch (IOException e) {
            e.printStackTrace();
            System.err.println("转换出错:" + e.getMessage());
        }
    }

    private static String convertPdfToHex(String filePath) throws IOException {
        File pdfFile = new File(filePath);
        byte[] fileBytes = new byte[(int) pdfFile.length()];

        // 使用try-with-resources自动关闭流,避免资源泄漏
        try (FileInputStream inputStream = new FileInputStream(pdfFile)) {
            inputStream.read(fileBytes);
        }

        StringBuilder hexBuilder = new StringBuilder();
        for (byte singleByte : fileBytes) {
            // %02X 生成大写两位十六进制,小写用%02x;如果需要分隔符可以改成"%02X "
            hexBuilder.append(String.format("%02X", singleByte));
        }
        return hexBuilder.toString();
    }
}

方案2:适合大体积PDF(流式读取)

如果你的PDF文件特别大(比如几百MB),一次性加载到内存可能会导致内存溢出,这时候用流式读取的方式,边读边转换更稳妥:

private static String convertLargePdfToHex(String filePath) throws IOException {
    StringBuilder hexBuilder = new StringBuilder();
    try (FileInputStream inputStream = new FileInputStream(filePath)) {
        int byteData;
        // 逐个字节读取,直到文件末尾
        while ((byteData = inputStream.read()) != -1) {
            hexBuilder.append(String.format("%02X", byteData));
        }
    }
    return hexBuilder.toString();
}

注意事项

  • 如果你需要把十六进制结果写入文件,只需要在得到hexResult后,用FileWriter或者BufferedWriter写入即可。
  • 十六进制字符串的大小写可以通过String.format的格式符调整:%02X是大写,%02x是小写。
  • 如果需要每个十六进制字节之间用空格或其他字符分隔,修改格式字符串即可,比如"%02X "会在每个字节后加空格。

内容的提问来源于stack exchange,提问作者MKP010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:26:12