iText FileStream 覆盖

iText FileStream overwirtes

我正在整理一些代码,这些代码将根据文件名前缀合并 pdf。我目前有以下代码获取文件名并且不合并,而是覆盖。我相信我的问题是 FileStream 放置,但如果我将它移出当前位置,我将无法获取文件名。有什么建议么?谢谢

static void CreateMergedPDFs() 
    {
        string srcDir = "C:/PDFin/";
        string resultPDF = "C:/PDFout/";
        {
            var files = System.IO.Directory.GetFiles(srcDir);
            string prevFileName = null;

            int i = 1;
            foreach (string file in files)
            {
                string filename = Left(Path.GetFileName(file), 8);
                using (FileStream stream = new FileStream(resultPDF  + filename + ".pdf", FileMode.Create))
                {

                    if (prevFileName == null || filename == prevFileName)
                    {
                        Document pdfDoc = new Document(PageSize.A4);
                        PdfCopy pdf = new PdfCopy(pdfDoc, stream); 
                        pdfDoc.Open();
                        {
                            pdf.AddDocument(new PdfReader(file));
                            i++;
                        }
                        if (pdfDoc != null)
                            pdfDoc.Close();
                        Console.WriteLine("Merges done!");
                    }

                }
            }
        }
    }
}

}

您描述的行为与您的代码一致。您正在以错误的方式创建循环。

试试这个:

static void CreateMergedPDFs() 
    {
        string srcDir = "C:/PDFin/";
        string resultPDF = "C:/PDFout/merged.pdf";
        FileStream stream = new FileStream(resultPDF, FileMode.Create);
        Document pdfDoc = new Document(PageSize.A4);
        PdfCopy pdf = new PdfCopy(pdfDoc, stream); 
        pdfDoc.Open();
        var files = System.IO.Directory.GetFiles(srcDir);
        foreach (string file in files)
        {
            pdf.AddDocument(new PdfReader(file));
        }
        pdfDoc.Close();
        Console.WriteLine("Merges done!");
    }
}

这样更有意义,不是吗?

如果您想根据前缀对文件进行分组,您应该阅读问题Group files in a directory based on their prefix

的答案

在这个问题的回答中,假设前缀和文件名的其余部分由 - 字符分隔。例如 1-abc.pdf1-xyz.pdf 有前缀 12-abc.pdf2-xyz.pdf 有前缀 2。在您的情况下,您不清楚如何确定前缀,但很容易获得所有文件的列表,对它们进行排序并根据您想要确定前缀的任何算法对文件进行分组。