2010-05-27 5 views
0

Je suis sûr que je fais une sorte d'erreur idiote ici, mais lors de la conversion d'un fichier tiff en PDF, les couleurs s'inversent. Je ne peux pas comprendre pourquoi. Voici mon code:Couleurs inversées en conversion tiff en PDF

Document document = new Document(PageSize.A4, 50, 50, 50, 50); 

PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("Image.pdf", FileMode.Create)); 

System.Drawing.Bitmap bm = new System.Drawing.Bitmap(@"C:\Temp\338814-00.tif"); 
int total = bm.GetFrameCount(FrameDimension.Page);     

document.Open(); 
PdfContentByte cb = writer.DirectContent; 

for (int k = 0; k < total; ++k) 
{ 
bm.SelectActiveFrame(FrameDimension.Page, k); 
MemoryStream ms = new MemoryStream(); 
bm.Save(ms, ImageFormat.Tiff); 

Image img = Image.GetInstance(ms.ToArray()); 

img.ScalePercent(72f/(float)img.DpiX * 100); 
img.SetAbsolutePosition(0, 0); 

cb.AddImage(img); 
document.NewPage();  
} 
document.Close(); 

Merci.

+0

Pourriez-vous télécharger un exemple d'image tiff qui pose problème quelque part? –

+0

J'ai copié et collé votre code (en ajoutant une déclaration pour un document de type iTextSharp.text.Document) et j'ai converti un TIFF de 844 pages en PDF sans voir les couleurs inversées. Y a-t-il un code que vous ne nous montrez pas? –

+0

C'est tout le code maintenant (manqué la ligne de déclaration de document que je viens d'ajouter). J'ai téléchargé le fichier tiff ici: http://www.2shared.com/photo/tomEXEAS/338814-00.html, mais ça arrive pour chaque image de tiff que je lui lance. – marekc

Répondre

1

La meilleure solution semble remplacer la ligne:

bm.Save(ms, ImageFormat.Tiff); 

avec

bm.Save(ms, ImageFormat.Png); 

Png semble donner la meilleure performance de taille vitesse/fichier pour les images Tiff. Pourquoi cela fonctionne je n'ai toujours aucune idée.

+1

La raison la plus probable est que les images TIFF 1 bit incluent généralement (mais pas toujours) une carte en couleur pour spécifier le sens du noir et blanc. En outre, ils ont aussi une étiquette appelée interprétation photométrique qui indique si 0 est noir ou 0 est blanc. Entre ces deux paramètres, il y a 4 possibilités de se tromper. – plinth

Questions connexes