pdf文档被另一个进程使用

时间:2012-10-25 18:18:54

标签: c# pdf itextsharp

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

我想要做的是将两者合并,以便Pdf B的页面先显示,然后Pdf A的页面显示。

这是我的代码,尝试将两个给定的PDF列表合并(Pdf B是第一个元素,filesdestinationfile列表中的第二个元素,{ {1}}是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();
    }
}

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

其他'过程'正在使用它?

1 个答案:

答案 0 :(得分: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));