我正在try 使用Bitmiracle.Docotic.Pdf修改PDF文件的元数据.我从BitMiracle的Github页面派生了以下示例.Metadata.pdf是我的PC中现有的PDF文档.

string pathToFile = "Metadata.pdf";
using (PdfDocument pdf = new PdfDocument(pathToFile))
{
    pdf.Info.Author = "Sample Browser application";
    pdf.Info.Subject = "Document metadata";
    pdf.Info.Title = "Custom title goes here";
    pdf.Info.Keywords = "pdf, Docotic.Pdf";
    
    pdf.Save(pathToFile);
}

我得到的错误如下:

System.IO.IOException:该进程无法访问文件‘Metadata.pdf’,因为另一个进程正在使用该文件.

我怎么才能解决这个问题?

推荐答案

该文件被PdfDocument实例锁定.而是保存为临时文件或流,并在处理PdfDocument后将临时数据复制到原始位置.示例代码:

string tempFile = ...;
using (var pdf = new PdfDocument(pathToFile))
{
    ...
    pdf.Save(tempFile);
}

File.Copy(tempFile, originalFileName, true);

Csharp相关问答推荐

循环访问Android视图中动态创建的子视图

等待限制选项似乎不适用于频道

应该使用哪一个?"_counter += 1 OR互锁增量(ref_counter)"""

碰撞检测与盒碰撞器,其isTrigger on问题

try 在Blazor项目中生成html

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

应用程序启动器,可 Select 物理屏幕

如何通过属性初始化器强制初始化继承记录内的属性?

Docker Container中的HttpRequest后地址不可用

使用Dapper映射联接查询对象数据到使用SplitOn;

从另一个不同 struct 的数组创建Newtonsoft.Json.Linq.J数组

具有可空类型的C#NOTNULL约束具有意外行为

依赖项注入、工厂方法和处置困境

交替的奇数

为什么我的伺服电机不动,下面的代码?

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

WPF动态设置弹出窗口水平偏移

游戏对象走向不同的方向

为什么我的UserControl没有加载到我的主窗口中?

将文本从剪贴板粘贴到RichTextBox时,新文本不会在RichTextBox ForeColor中着色