在我的项目中,我正在访问文件本地文件并将其复制到另一个文件,然后为其添加水印,但在复制时,我得到IO Exception “不能访问文件”我确信,该文件是免费的,而不是由任何其他进程访问的任何机构可以告诉我会是什么问题是进程无法访问文件“ Path”,因为它正在被一些其他进程使用
我的代码,
protected void AddWaterMark(string file)
{
string watermark = "Confidential Document Printed on " + DateTime.Now.ToString();
const int emSize = 40;
try
{
// Get a fresh copy of the sample PDF file
string filename = @"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\FileUpload\"+file;
string filename1 [email protected]"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\FileUpload\" + file; ;
bool b = true;// File_lock(filename);
if(b==true)
{
File.Copy(Path.Combine(@"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\FileUpload",
filename), Path.Combine(@"E:\Rajesh_Kumar\Application\Valuation\ExamManagement\ExamManagement\UFileUpload ",
filename1), true); //Exception was Thrown Here
// Create the font for drawing the watermark
XFont font = new XFont("Times New Roman", emSize, XFontStyle.BoldItalic);
// Open an existing document for editing and loop through its pages
PdfDocument document = PdfReader.Open(filename);
// Set version to PDF 1.4 (Acrobat 5) because we use transparency.
if (document.Version < 14)
document.Version = 14;
for (int idx = 0; idx < document.Pages.Count; idx++)
{
//if (idx == 1) break;
PdfPage page = document.Pages[idx];
// Variation 1: Draw watermark as text string
// Get an XGraphics object for drawing beneath the existing content
XGraphics gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend);
// Get the size (in point) of the text
XSize size = gfx.MeasureString(watermark, font);
// Define a rotation transformation at the center of the page
gfx.TranslateTransform(page.Width/2, page.Height/2);
gfx.RotateTransform(-Math.Atan(page.Height/page.Width) * 180/Math.PI);
gfx.TranslateTransform(-page.Width/2, -page.Height/2);
// Create a string format
XStringFormat format = new XStringFormat();
format.Alignment = XStringAlignment.Near;
format.LineAlignment = XLineAlignment.Near;
// Create a dimmed red brush
XBrush brush = new XSolidBrush(XColor.FromArgb(128, 255, 0, 0));
// Draw the string
gfx.DrawString(watermark, font, brush,
new XPoint((page.Width - size.Width)/2, (page.Height - size.Height)/2),format);
}
// Save the document...
document.Save(filename);
// ...and start a viewer
Process.Start(filename);
File.Exists(filename);
}
}
catch(Exception ex)
{
ClientMessaging(ex.Message);
}
}.
您的输入和输出文件名称是相同的。 – Igarioshka
@lgarioshka如果我尝试使用不同的文件名发生同样的异常,当我评论File.Copy行并且执行程序时,它正在正确运行添加水印但不创建新文件 – Rajesh
如果将另一个文件名传递给文档.Save(文件名);以便它将处理的文档保存到另一个路径? – Igarioshka