gpt4 book ai didi

java - 使用 JAI 将 JAVA 中的二进制文本转换为 Tiff 图像/PDF

转载 作者:行者123 更新时间:2023-12-02 07:30:57 24 4
gpt4 key购买 nike

我有不同的要求。我收到二进制文本形式的 TIFF 图像。我不知道是否可以称之为二进制文本。文本包含非 ASCII 字符,如下所示

0ÎÀi7°®èý¯Â£ôîÀk1 ü"»£ð‚£Ê£ðü»£ö¿
ŒGÓº?¬hÄr€kðŠîÂ
ŒG*Àkð
¸z «ÿ*ëÿ¢^˾6‚¢êZÒáÿì)eì"‚("¿ ÿ€jPšÄ0?<À@Ã\=> P€ª ê¨Eý5?J†¤=oöà |(0à 6ª™P† !*¯Ä 0ÿ*¢uÝ¡ 0Š­jþ &&—ÿ
+§¾È°Ã¡-s§‚2“³˜©Î{é ¾pªXp%&ì ;PËæ™4ºfŒ˜Îÿ Éû½)¨ŽV“þp¦IÇG˜bþñÿÿi•¼

所以,我厌倦了使用下面的代码使用 imageIO 读取此文本,但它会抛出错误。

String str = "Binary Mentioned Above";
byte[] b = str.getBytes();
ByteArrayInputStream in = new ByteArrayInputStream(b);
BufferedImage bImageFromConvert = ImageIO.read(in);

TIFFEncodeParam params = new TIFFEncodeParam();
File myNewTIFF_File = new File("C:\\Projects\\test\\combined.tif");
ImageIO.write(bImageFromConvert, "TIFF", myNewTIFF_File);

我收到的错误消息是

Exception in thread "main" java.lang.IllegalArgumentException: image == null!

现在浏览帖子,我发现并非所有 TIF 都可以使用 ImageIO 读取。所以我使用了一个在线代码,基本上可以将 TIFF 转换为 PDF。

public static String ImageToPDF(byte[] bytes, String pathFile) {
String fileName= pathFile + ".pdf";
Document document = null;

document = new Document();

try {
FileOutputStream fos = new FileOutputStream(fileName);
PdfWriter writer = PdfWriter.getInstance(document, fos);

writer.open();
document.open();

// Array of bytes we have read from the Binary file
RandomAccessFileOrArray ra = new RandomAccessFileOrArray(bytes);
System.out.println("ra ---- "+ra);

// Get the number of pages the the binary file have inside
int numberOfPages = TiffImage.getNumberOfPages(ra);
System.out.println("numberOfPages ------------ "+numberOfPages);

// Loop through numberOfPages and add them on the document
// one by one
for(int page = 1; page <= numberOfPages; page ++){
Image image = TiffImage.getTiffImage(new RandomAccessFileOrArray(bytes),page);
image.scaleAbsolute(500, 500);
document.add(image);
}

document.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}

public static void main(String[] args) throws IOException{


File imgFront = new File("C:\\Projects\\newtest.txt");
byte[] fileContent = Files.readAllBytes(imgFront.toPath());
//fileContent = File

ImageToPDF(fileContent,"C:\\Projects\\pdfWithImage");

}

我收到的错误为 Bad endianness tag (not 0x4949 or 0x4d4d) 。当我尝试读取 Tiff 中的页面时,此错误出现在 TiffImage.getNumberOfPages(ra); 行中。我使用 Mirth 工具验证了创建 tiff 的二进制文本,并且该 tiff 是有效的。我已经没有办法解决这个问题了。非常感谢任何帮助。

最佳答案

此问题已解决。发生此问题的原因是二进制文本未正确生成并导致了问题。

向客户端发出请求,以 Base64 编码格式发送数据。现在效果很好。二进制字符集出现的一个问题是所有非字符都被正确写入文件。这就是为什么任何程序语言都无法正确转换它的原因。

当我们收到 Base64 消息形式的数据时,直接使用 mirth 文件编写器即可解决问题。

感谢您为解决问题所做的一切努力。您的建议给了我们一个想法。

关于java - 使用 JAI 将 JAVA 中的二进制文本转换为 Tiff 图像/PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58727425/

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