1

と の 2 つの PDF ファイルがPdf AありPdf Bます。Pdf AコンピューターのC:ドライブに既に存在し、ドライブPdf Bに着陸するプログラムによって生成されC:ます。

私がやりたいことは、Pdf Aのページが最初に表示され、その後に のページが表示されるように、2 つを組み合わせるPdf Bことです。

これは、PDFのリストを指定して2つを結合しようとする私のコードです(Pdf Aはリストの最初の要素であり、 はリストPdf Bの2番目の要素であり、 is です):filesdestinationfilePdf 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 に答える