Les mauvaises performances de convertir tif en pdf à l'aide de ITextSharp

Résumé: Comment puis-je réduire la quantité de temps qu'il faut pour convertir le fil de fichiers pdf à l'aide itextsharp?

De fond: je suis la conversion d'une partie assez grande tif est au format pdf à l'aide de C# et itextsharp, et j'en suis très mauvais rendement. Les fichiers tiff sont environ 50ko un morceau, et certains documents ont jusqu'à 150 séparer les fichiers tif (représentant chacune une page). Pour une page 132 document (~6500 ko), il a fallu environ 13 minutes pour convertir. Lors de la conversion, le CPU seul serveur, il a été en cours d'exécution sur à 100%, m'amenant à croire que le processus a été liée à l'UC. Le fichier de sortie pdf 3,5 MO. Je suis ok avec la taille, mais le temps semble un peu élevé pour moi.

Code:

private void CombineAndConvertTif(IList<FileInfo> inputFiles, FileInfo outputFile)
{
    using (FileStream fs = new FileStream(outputFile.FullName, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
    {
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        PdfWriter writer = PdfWriter.GetInstance(document, fs);
        document.Open();
        PdfContentByte cb = writer.DirectContent;

        foreach (FileInfo inputFile in inputFiles)
        {
            using (Bitmap bm = new Bitmap(inputFile.FullName))
            {
                int total = bm.GetFrameCount(FrameDimension.Page);

                for (int k = 0; k < total; ++k)
                {
                    bm.SelectActiveFrame(FrameDimension.Page, k);
                    //Testing shows that this line takes the lion's share (80%) of the time involved.
                    iTextSharp.text.Image img =
                        iTextSharp.text.Image.GetInstance(bm, null, true);
                    img.ScalePercent(72f / 200f * 100);
                    img.SetAbsolutePosition(0, 0);

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

        document.Close();
        writer.Close();
    }

}
InformationsquelleAutor C. Ross | 2009-12-30