我有两个PDF文件:Pdf A
和Pdf B
。计算机的Pdf A
驱动器上已存在C:
,Pdf B
通过该程序生成C:
,该程序也位于Pdf A
驱动器中。
我想要做的是将两者合并,以便Pdf B
的页面先显示,然后Pdf A
的页面显示。
这是我的代码,尝试将两个给定的PDF列表合并(Pdf B
是第一个元素,files
是destinationfile
列表中的第二个元素,{ {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();
}
}
文档对象尝试关闭时会出现此问题。它说它正在被另一个过程使用。
其他'过程'正在使用它?
答案 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));