1

我有两个 PDF 文件:Pdf APdf B. Pdf A已经存在于计算机的C:驱动器上,并Pdf B通过也位于驱动器中的程序生成C:

我想要做的是将两者结合起来,以便Pdf A首先显示 's 页面,然后显示Pdf B's 页面。

这是我的代码,它尝试在给定 PDF 列表的情况下将两者结合起来(Pdf A是第一个元素,Pdf B是列表中的第二个元素files,并且destinationfileis Pdf A):

public static void MergePdfFiles(string destinationfile, List<string> files)
{
    Document document = null;

    try
    {
        List<PdfReader> readers = new List<PdfReader>();
        List<int> pages = new List<int>();

        foreach (string file in files)
        {
            readers.Add(new PdfReader(file));
        }

        document = new Document(readers[0].GetPageSizeWithRotation(1));

        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destinationfile, FileMode.Create));

        document.Open();

        foreach (PdfReader reader in readers)
        {
            pages.Add(reader.NumberOfPages);
            WritePage(reader, document, writer);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    finally
    {
        //being used by another process
        document.Close();
    }
}

当文档对象尝试关闭时会出现此问题。它说它正在使用另一个过程。

什么“其他”过程正在使用它?

4

1 回答 1

3

尝试更改此行:

PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destinationfile, FileMode.Create));

到这一行:

PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destinationfile, FileMode.Create,FileAccess.Write,FileShare.ReadWrite));
于 2012-10-25T18:26:10.577 回答