Hey Leute,
ich versuche gerade verzweifelt ein PDF zu einer tiff Datei zu konvertieren die ich dann mit Asterisk weg faxen kann.
Die pdftools haben das wohl implementiert aber die lib ist ja nicht kostenlos. Allerdings steht da geschrieben welche Einstellungen wichtig sind.
https://www.pdf-tools.com/docs/pdf-tools-sdk/convert/conversion-profiles/#fax
Das habe ich eigentlich so auch eingestellt und mit tiffInfo unter linux wirds mir dann auch angezeigt. Trotzdem kann asterisk das nicht faxen. Da das allgemeingültig für Fax ist und nicht unbedingt nur für Asterisk hoffe ich, dass es vielleicht jemanden gibt der mir sagen kann wie ich das machen muss.
Hier mal mein Java code und vielen Dank schon mal.
ich versuche gerade verzweifelt ein PDF zu einer tiff Datei zu konvertieren die ich dann mit Asterisk weg faxen kann.
Die pdftools haben das wohl implementiert aber die lib ist ja nicht kostenlos. Allerdings steht da geschrieben welche Einstellungen wichtig sind.
- Compression algorithm: CCITT Group 3 or CCITT Group 4
- Vertical resolution: 98 DPI (Standard) or 196 DPI (High)
https://www.pdf-tools.com/docs/pdf-tools-sdk/convert/conversion-profiles/#fax
Das habe ich eigentlich so auch eingestellt und mit tiffInfo unter linux wirds mir dann auch angezeigt. Trotzdem kann asterisk das nicht faxen. Da das allgemeingültig für Fax ist und nicht unbedingt nur für Asterisk hoffe ich, dass es vielleicht jemanden gibt der mir sagen kann wie ich das machen muss.
Hier mal mein Java code und vielen Dank schon mal.
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());
}