将PDF转为可通过Asterisk传真的TIFF文件遇阻,求技术指导
问题:PDF转TIFF后无法通过Asterisk发送传真
我正尝试将PDF转换为可通过Asterisk发送传真的TIFF文件,目前遇到了困难。PDF工具库虽具备此功能但并非免费,不过相关文档指定了几个关键设置:
- 压缩算法:CCITT Group 3或CCITT Group 4
- 垂直分辨率:98 DPI(标准)或196 DPI(高)
我已配置好这些设置,用Linux的tiffInfo检查输出文件一切正常,但Asterisk仍无法发送传真。这些是传真通用标准设置而非Asterisk专属,希望有人能指出我可能遗漏或出错的地方。
以下是我的Java代码:
public static InputStream toTIFF(InputStream pdfInputStream) { PDDocument document = null; ImageOutputStream imageOutputStream = null; ByteArrayOutputStream pdfOutputStream = new ByteArrayOutputStream(); try { document = Loader.loadPDF(IOUtils.toByteArray(pdfInputStream)); imageOutputStream = ImageIO.createImageOutputStream(pdfOutputStream); Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff"); ImageWriter writer = writers.next(); writer.setOutput(imageOutputStream); ImageWriteParam writeParam = writer.getDefaultWriteParam(); writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); writeParam.setCompressionType("CCITT T.6"); PDFRenderer pdfRenderer = new PDFRenderer(document); writer.prepareWriteSequence(null); for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) { BufferedImage image = pdfRenderer.renderImageWithDPI(pageIndex, 98, ImageType.BINARY); BufferedImage bwImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_BINARY); Graphics2D g2d = bwImage.createGraphics(); g2d.drawImage(image, 0, 0, Color.WHITE, null); g2d.dispose(); IIOImage ioImage = new IIOImage(bwImage, null, null); writer.writeToSequence(ioImage, writeParam); } writer.endWriteSequence(); writer.dispose(); document.close(); imageOutputStream.close(); } catch (Exception e) { e.printStackTrace(); } return new ByteArrayInputStream(pdfOutputStream.toByteArray()); }
内容的提问来源于stack exchange,提问作者Imo Graf
相关产品推荐
相关产品推荐

