使用 iText 合并目录中的所有 Pdf 文件
Merging All Pdf Files in Directory Using iText
大家好,感谢您的提前帮助。我正在尝试使用 iText 合并目录中包含的所有 Pdf 文件。这是我的代码:
public class MergeFiles
{
public MergeFiles(string targetDirectory) {
string dest = targetDirectory + @"\Merged.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
PdfMerger merger = new PdfMerger(pdfDoc);
string[] fileEntries = Directory.GetFiles(targetDirectory);
foreach (string fileName in fileEntries) {
//PdfMerger merger = new PdfMerger(pdfDoc);
PdfDocument newDoc = new PdfDocument(new PdfReader(fileName));
merger.Merge(newDoc, 1, newDoc.GetNumberOfPages());
newDoc.Close();
};
pdfDoc.Close();
}
}
此代码导致错误 "System.IO.IOException: The process cannot access the file 'E:\Merged.pdf' because it is being used by another process." 但是,我不确定原因。任何帮助将不胜感激。
在这两行之后:
string dest = targetDirectory + @"\Merged.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
在您的目标目录中创建了一个名为 "Merged.pdf" 的新(空)文件,文件流以写入模式打开以写入合并过程的结果。
然后,您将获得目标目录中的文件列表string[] fileEntries = Directory.GetFiles(targetDirectory);
。该数组已包含您新创建的 Merged.pdf
文件。
最终代码尝试将生成的文件合并到自身中,这显然失败了。
为避免此错误,要么在创建目标文档之前收集要合并的文件(但要确保目标目录中没有现有的 "Merged.pdf" 文件):
string[] fileEntries = Directory.GetFiles(targetDirectory);
string dest = targetDirectory + @"\Merged.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
// The rest of the code
或者,只需在合并文件之前从 fileEntries
数组中手动删除目标文件。
大家好,感谢您的提前帮助。我正在尝试使用 iText 合并目录中包含的所有 Pdf 文件。这是我的代码:
public class MergeFiles
{
public MergeFiles(string targetDirectory) {
string dest = targetDirectory + @"\Merged.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
PdfMerger merger = new PdfMerger(pdfDoc);
string[] fileEntries = Directory.GetFiles(targetDirectory);
foreach (string fileName in fileEntries) {
//PdfMerger merger = new PdfMerger(pdfDoc);
PdfDocument newDoc = new PdfDocument(new PdfReader(fileName));
merger.Merge(newDoc, 1, newDoc.GetNumberOfPages());
newDoc.Close();
};
pdfDoc.Close();
}
}
此代码导致错误 "System.IO.IOException: The process cannot access the file 'E:\Merged.pdf' because it is being used by another process." 但是,我不确定原因。任何帮助将不胜感激。
在这两行之后:
string dest = targetDirectory + @"\Merged.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
在您的目标目录中创建了一个名为 "Merged.pdf" 的新(空)文件,文件流以写入模式打开以写入合并过程的结果。
然后,您将获得目标目录中的文件列表string[] fileEntries = Directory.GetFiles(targetDirectory);
。该数组已包含您新创建的 Merged.pdf
文件。
最终代码尝试将生成的文件合并到自身中,这显然失败了。
为避免此错误,要么在创建目标文档之前收集要合并的文件(但要确保目标目录中没有现有的 "Merged.pdf" 文件):
string[] fileEntries = Directory.GetFiles(targetDirectory);
string dest = targetDirectory + @"\Merged.pdf";
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
// The rest of the code
或者,只需在合并文件之前从 fileEntries
数组中手动删除目标文件。