2016-07-21 6 views
0

나는 파일 이름 접두사를 기반으로 PDF를 병합 할 일부 코드를 함께 모으는 중입니다. 현재 파일 이름을 잡고 병합하지 않지만 덮어 쓰는 아래 코드가 있습니다. 내 문제는 FileStream 배치라고 생각하지만 현재 위치에서 이동하면 파일 이름을 가져올 수 없습니다. 어떤 제안? 감사.iText FileStream overwirtes

static void CreateMergedPDFs() 
    { 
     string srcDir = "C:/PDFin/"; 
     string resultPDF = "C:/PDFout/"; 
     { 
      var files = System.IO.Directory.GetFiles(srcDir); 
      string prevFileName = null; 

      int i = 1; 
      foreach (string file in files) 
      { 
       string filename = Left(Path.GetFileName(file), 8); 
       using (FileStream stream = new FileStream(resultPDF + filename + ".pdf", FileMode.Create)) 
       { 

        if (prevFileName == null || filename == prevFileName) 
        { 
         Document pdfDoc = new Document(PageSize.A4); 
         PdfCopy pdf = new PdfCopy(pdfDoc, stream); 
         pdfDoc.Open(); 
         { 
          pdf.AddDocument(new PdfReader(file)); 
          i++; 
         } 
         if (pdfDoc != null) 
          pdfDoc.Close(); 
         Console.WriteLine("Merges done!"); 
        } 

       } 
      } 
     } 
    } 
} 

}

답변

1

당신이 설명하는 동작 코드와 일치한다. 루프를 잘못된 방식으로 생성하고 있습니다.

이 시도 :

static void CreateMergedPDFs() 
    { 
     string srcDir = "C:/PDFin/"; 
     string resultPDF = "C:/PDFout/merged.pdf"; 
     FileStream stream = new FileStream(resultPDF, FileMode.Create); 
     Document pdfDoc = new Document(PageSize.A4); 
     PdfCopy pdf = new PdfCopy(pdfDoc, stream); 
     pdfDoc.Open(); 
     var files = System.IO.Directory.GetFiles(srcDir); 
     foreach (string file in files) 
     { 
      pdf.AddDocument(new PdfReader(file)); 
     } 
     pdfDoc.Close(); 
     Console.WriteLine("Merges done!"); 
    } 
} 

은 그게 더 의미가,하지 않습니다 그것?

당신이 그들의 접두사를 기반으로 그룹 파일을 원하는 경우, 당신은 질문 Group files in a directory based on their prefix

이 질문에 대한 답에 대한 답을 읽어야합니다, 접두사와 파일 이름의 나머지 부분에 의해 분리되는 것으로 가정 a - 문자. 예를 들어 1-abc.pdf1-xyz.pdf1 인 반면 2-abc.pdf2-xyz.pdf의 접두어는 2입니다. 귀하의 경우 접두사를 어떻게 결정할 지 명확하지 않지만 모든 파일 목록을 가져 와서 정렬하고 접두어를 결정할 알고리즘에 따라 파일 그룹을 만드는 것은 쉽습니다.

+0

답장을 보내 주셔서 감사합니다. 모든 파일을 단일 파일로 병합 할 수 있었지만 문제는 파일 접두사를 기반으로 여러 파일을 만드는 것입니다. 그래서 123.pdf, 122.pdf 및 222.pdf가 있고 출력 파일에 2 pdfs로 끝나고 싶습니다. for 루프에 들어가기 전에 파일 이름 (접두사)이 필요하므로 병합 할 수 있습니다. 말이 돼? – okmred

+0

123.pdf, 122.pdf 및 222.pdf라는 파일의 접두어가 분명하지 않기 때문에 * 특정 * 요청이 이해가되지 않습니다. 접두사를 기반으로 파일을 필터링하고 그 접두사를 기반으로 파일을 병합하는 * 일반 * 요청은 이해할 만하다. 그러나이 질문은 iText 질문으로 태그를 붙여서는 안됩니다. 프로그래밍 언어. Java에서이 작업을 수행하는 방법을 설명 할 수 있습니다. C#에서 질문하는 방법을 묻고 싶다면 C# 질문을 작성해야합니다 (단, 이러한 질문은 하향 투표를받을 수 있습니다). –

+0

답변을 업데이트했습니다. –