合并的 PDF 在我尝试删除它们时被 WebKit 显示为 "in use"
merged PDFs are showing as "in use" by WebKit when I try to delete them
我正在使用 Node、iTextSharp 和 Edge 将多个 PDF 合并为一个 PDF。在我尝试删除原始 PDF 之前,一切正常。它们是 WebKit 的 "in use"。如果我关闭 NW,它们当然会被释放。我可以 运行 相同的代码但使用控制台应用程序并且可以立即删除文件。有什么想法吗?
---NW javascript---
var edge = require('edge');
var dotNetFunction = edge.func({
assemblyFile: 'E:/VisualStudio2013Projects/Edge/Edge.PDF/bin/Debug/Edge.PDF.dll',
typeName: 'Edge.PDF.StartUp',
methodName: 'MergePDF'
});
var payload = {
targetPDF: 'C:/test/042715JM75-NEW.pdf',
filesPDF: ['C:/test/042715JM75.pdf','C:/test/042715JM75-sales-copy.pdf'],
};
---C#---
namespace Edge.PDF
{
public class StartUp
{
public async Task<object> MergePDF(dynamic input)
{
return await Task.Run(async () =>
{
string lJsonData = string.Empty;
string targetPDF = input.targetPDF;
var filesPDF = input.filesPDF;
using (FileStream stream = new FileStream(targetPDF, FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A4);
PdfCopy pdf = new PdfCopy(pdfDoc, stream);
pdfDoc.Open();
var files = filesPDF;
foreach (string file in files)
{
pdf.AddDocument(new PdfReader(file));
}
if (pdfDoc != null)
pdfDoc.Close();
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true});
});
}
}
}
您不应创建文件数组 (filesPDF
),而应创建 PdfReader
个实例数组。将这些阅读器中的每一个添加到 pdf
并在关闭 pdf
后,再次遍历阅读器以关闭它们:
foreach (PdfReader reader in fileReaders) {
reader.Close();
}
现在文件处理程序将被释放,您将能够删除文件。
我正在使用 Node、iTextSharp 和 Edge 将多个 PDF 合并为一个 PDF。在我尝试删除原始 PDF 之前,一切正常。它们是 WebKit 的 "in use"。如果我关闭 NW,它们当然会被释放。我可以 运行 相同的代码但使用控制台应用程序并且可以立即删除文件。有什么想法吗?
---NW javascript---
var edge = require('edge');
var dotNetFunction = edge.func({
assemblyFile: 'E:/VisualStudio2013Projects/Edge/Edge.PDF/bin/Debug/Edge.PDF.dll',
typeName: 'Edge.PDF.StartUp',
methodName: 'MergePDF'
});
var payload = {
targetPDF: 'C:/test/042715JM75-NEW.pdf',
filesPDF: ['C:/test/042715JM75.pdf','C:/test/042715JM75-sales-copy.pdf'],
};
---C#---
namespace Edge.PDF
{
public class StartUp
{
public async Task<object> MergePDF(dynamic input)
{
return await Task.Run(async () =>
{
string lJsonData = string.Empty;
string targetPDF = input.targetPDF;
var filesPDF = input.filesPDF;
using (FileStream stream = new FileStream(targetPDF, FileMode.Create))
{
Document pdfDoc = new Document(PageSize.A4);
PdfCopy pdf = new PdfCopy(pdfDoc, stream);
pdfDoc.Open();
var files = filesPDF;
foreach (string file in files)
{
pdf.AddDocument(new PdfReader(file));
}
if (pdfDoc != null)
pdfDoc.Close();
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { success = true});
});
}
}
}
您不应创建文件数组 (filesPDF
),而应创建 PdfReader
个实例数组。将这些阅读器中的每一个添加到 pdf
并在关闭 pdf
后,再次遍历阅读器以关闭它们:
foreach (PdfReader reader in fileReaders) {
reader.Close();
}
现在文件处理程序将被释放,您将能够删除文件。