2013-03-23 3 views
0

У меня есть следующий код, который открывает PDF-файл и добавляет текст и изображения. В какой-то момент я открываю второй PDF-файл, обертывая его в изображение и добавляя его в PDF-файл. После успешного завершения операции я хочу удалить второй PDF (тот, который я упаковал в изображение). Проблема в том, что файл заблокирован, пока я не сброшу приложение ASP.NET.Открытие второго PdfReader в используемом блоке в iTextSharp

В методе GetImageFromPdf вы можете увидеть, что я создаю второй экземпляр PdfReader. Проблема в том, что если я закрою этого читателя, читатель в моем методе Create также будет закрыт! Я делаю что-то неправильно? Есть ли другой способ достичь моей цели?

Вот соответствующий код:

public void Create(string outputFilePath, bool preview = false) 
{ 
    using (PdfReader reader = new PdfReader(FilePath)) 
    { 
     using (PdfStamper stamper = new PdfStamper(reader, new FileStream(outputFilePath, FileMode.Create))) 
     { 
      PdfContentByte canvas = stamper.GetOverContent(1); 

      ... 

      AddMap(canvas, stamper); 
     } 
    } 
} 

... 

private void AddMap(PdfContentByte Canvas, PdfStamper stamper) 
{ 
    Image ImageWrapper = GetImageFromPdf(stamper.Writer, _MapFilePath); 

    //set the position and scale the image 
    ImageWrapper.ScaleAbsolute(152.5f, 152.5f); 
    ImageWrapper.SetAbsolutePosition(58.5f, 197.5f); 

    Canvas.AddImage(ImageWrapper); 
} 

... 

public Image GetImageFromPdf(PdfWriter Writer, string MapFilePath) 
{ 
    //since vector images are not supported natively by iTextSharp 
    //we have saved the location maps as PDF (originally in eps format) 
    //we use GetImportedPage to import the file, and wrap it in an Image object so we can scale it 

    //If I close this reader, the reader in the Create method is closed as well 
    PdfReader reader = new PdfReader(MapFilePath); 
    PdfImportedPage ImportedPage = Writer.GetImportedPage(reader, 1); 

    return Image.GetInstance(ImportedPage); 
} 

ответ

1

Попробуйте

using (PdfReader reader = new PdfReader(FilePath),PdfReader reader1 = new PdfReader(MapFilePath)) 
{ 
pass that reader1 object to AddMap method. 
} 
+0

Это сделал. Спасибо за помощь! –

Смежные вопросы