Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-05-2007, 21:39   #1
DigitalKiller
Senior Member
 
L'Avatar di DigitalKiller
 
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
[Java] Problema conversione tiff in pdf

Ciao a tutti!
Sto cercando di convertire un'immagine tiff "multipagina" in pdf utilizzando la libreria itext. Per le prove, ho modificato un programma di esempio preso dalla documentazione presente sul sito:
Codice:
/**
 *
 */
package pdf;

import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.Image;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.RandomAccessFileOrArray;
import com.lowagie.text.pdf.codec.TiffImage;

public class Tiff2Pdf {

    public static void main(String[] args) {
    String tiff_file = "C:/x.tif";
    String pdf_file = "C:/a.pdf";   
    Document document = new Document();
    
    try {
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf_file));
        int pages = 0;
        document.open();
        PdfContentByte cb = writer.getDirectContent();
        RandomAccessFileOrArray ra = null;
        int comps = 0;
        try {
        ra = new RandomAccessFileOrArray(tiff_file);
        comps = TiffImage.getNumberOfPages(ra);
        } catch (Throwable e) {
        System.out.println("Exception in " + tiff_file + " " + e.getMessage());
        //continue;
        }
    
        System.out.println("Processing: " + tiff_file);
        for (int c = 0; c < comps; ++c) {
        try {
            Image img = TiffImage.getTiffImage(ra, c + 1);
            if (img != null) {
            System.out.println("page " + (c + 1));
            if (img.scaledWidth() > 500 || img.scaledHeight() > 700) {
                img.scaleToFit(500, 700);
            }
            img.setAbsolutePosition(20, 20);
            document.add(new Paragraph(tiff_file + " - page " + (c + 1)));
            cb.addImage(img);
            document.newPage();
            ++pages;
            }
        } catch (Throwable e) {
            System.out.println("Exception " + tiff_file + " page " + (c + 1) + " " + e.getMessage());
        }
        }
        ra.close();
        document.close();
    } catch (Throwable e) {
        e.printStackTrace();
    }
    }
}
La conversione va a buon fine, ma durante il processo, inspiegabilmente, viene saltata l'ultima pagina. Dopo alcune prove, ho notato che il metodo TiffImage.getNumberOfPages(ra) mi restituisce una pagina in meno (nel mio caso 7 pagine e non 8).
Come mai?
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
DigitalKiller è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 21:59   #2
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
ehmm..
hai provato con Image img = TiffImage.getTiffImage(ra, c); ?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2007, 22:43   #3
DigitalKiller
Senior Member
 
L'Avatar di DigitalKiller
 
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ehmm..
hai provato con Image img = TiffImage.getTiffImage(ra, c); ?
Si, penso di averle provate tutte. Comunque questo è quello che ottengo modificando come hai detto tu:
Codice:
java.lang.IllegalArgumentException: The page number must be >= 1.
	at com.lowagie.text.pdf.codec.TiffImage.getTiffImage(Unknown Source)
	at com.lowagie.text.pdf.codec.TiffImage.getTiffImage(Unknown Source)
	at pdf.Tiff2Pdf.main(Tiff2Pdf.java:41
Ho anche provato a fare questa modifica comps = TiffImage.getNumberOfPages(ra+1); ma ottengo sempre un'eccezione:
Codice:
ExceptionConverter: java.io.EOFException
	at com.lowagie.text.pdf.RandomAccessFileOrArray.readUnsignedInt(Unknown Source)
	at com.lowagie.text.pdf.codec.TIFFDirectory.readUnsignedInt(Unknown Source)
	at com.lowagie.text.pdf.codec.TIFFDirectory.initialize(Unknown Source)
	at com.lowagie.text.pdf.codec.TIFFDirectory.<init>(Unknown Source)
	at com.lowagie.text.pdf.codec.TiffImage.getTiffImage(Unknown Source)
	at com.lowagie.text.pdf.codec.TiffImage.getTiffImage(Unknown Source)
	at pdf.Tiff2Pdf.main(Tiff2Pdf.java:41)
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
DigitalKiller è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 16:01   #4
DigitalKiller
Senior Member
 
L'Avatar di DigitalKiller
 
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
Up
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
DigitalKiller è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2007, 18:28   #5
DigitalKiller
Senior Member
 
L'Avatar di DigitalKiller
 
Iscritto dal: Aug 2004
Città: Salento
Messaggi: 1080
Forse ho capito dove sta il problema, ma ancora non ho trovato una soluzione
La tiff su cui sto lavorando è stata codificata in big-endian. Utilizzando infatti un'altra tiff, codificata in little-endian, la conversione va a buon fine.
Ora, nel mio programma come posso convertire la tiff da big a little-endian?

Con queste righe
Codice:
PrintObjectTransformedInputStream is = spoolFile.getTransformedInputStream(printParms);            
            BufferedInputStream bufIn = new BufferedInputStream(is);                        
            BufferedOutputStream bufOut = new BufferedOutputStream(new FileOutputStream("c:/x.tif"));
            
            int c;
            while ((c = bufIn.read()) != -1) {
                bufOut.write(c);
            }

            bufIn.close();
            bufOut.close();
ricevo da un AS400 un input stream in formato tiff e lo scrivo in un file (sempre in big-endian). Posso convertirlo in little-endian?
__________________
Il 90% dei problemi riscontrati sui computer sono localizzabili tra la sedia e la tastiera, il restante 10% nella scopa della donna delle pulizie.
DigitalKiller è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
AGCOM, passo falso nel PDF dei siti porn...
ECOVACS fa sul serio: T80 Omni scende a ...
Galaxy S25 Ultra a soli 949€ su Amazon: ...
Amazon lo nasconde, ma è attivo un -15% ...
Accessori auto da non perdere su Amazon:...
Solo gli esseri biologici possono essere...
Le GPU NVIDIA restano spente: Microsoft ...
Germanio superconduttore: un passo avant...
Nexperia, l'incontro tra Trump e Xi Jinp...
GPU RDNA 1 RX 5000 e RDNA 2 RX 6000, AMD...
Google Maps avrà una modalit&agra...
HONOR sta lavorando a uno smartphone con...
Thermaltake MAGFloe 360 Ultra ARGB Sync:...
Xiaomi 15T ora in super offerta su Amazo...
Si stringe il cerchio attorno a TP-Link ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:52.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v