Tou a tentar fazer um programa que converta imagens de DICOM para png, montar essas imagens num pdf e imprimir…
O problema é que quando faço a chamada ao sistema para converter as imagens ele as bloqueia e não me deixa carrega-las… alguem me pode dar uma ajuda…
o código é o seguinte:(falta a parte da impressão mas não interessa)
public class DicomConverter {
private static Process process;
public static void main(String[] args) throws IOException {
//execução do programa que converte as imagens DICOM para png
process= Runtime.getRuntime().exec("dicom2 -p *.dcm");
DicomConverter job = new DicomConverter();
//process.destroy();
job.convert();
}
public void convert(){
Document document = new Document();
int cont=0;
//contagem do numero de ficheiros .dcm na directoria
String dir = "c://convert//DICOM";
File directory = new File(dir);
String[] files = directory.list();
for (int k = 0; k < files.length; k++){
if(files[k].matches(".*dcm")){
cont++;
}
}
try {
//criação do documento .pdf
PdfWriter.getInstance(document, new FileOutputStream("c://convert//DICOM.pdf"));
// abertura do ducumento
document.open();
// inserção das imagens
for (int i=1; i<=cont; i++){
//"carrega" a imagem
Image img = Image.getInstance("teste"+i+".dcm.png");
//dimensiona para 290x227 px
img.scaleAbsolute(290,227);
//verificação da posição
int j= i%6;
//posicionamento
switch (j){
case 1: img.setAbsolutePosition(5,560);break;
case 2: img.setAbsolutePosition(300,560);break;
case 3: img.setAbsolutePosition(5,323);break;
case 4: img.setAbsolutePosition(300,323);break;
case 5: img.setAbsolutePosition(5,86);break;
case 0: img.setAbsolutePosition(300,86);break;
}
document.add(img);
//à sexta imagem acrescenta uma página
if(j==0){
document.newPage();
}
}
} catch(DocumentException de) {
System.err.println(de.getMessage());
} catch(IOException ioe) {
System.err.println(ioe.getMessage());
}
// fechar documento
document.close();
try {
printer bp = null;
bp = new printer("c://convert//DICOM.pdf", null);
bp.waitForDone();
} catch (Exception e) {
e.printStackTrace();
}
}