문제

워드 문서 디렉토리를 프로그래밍 적으로 인쇄하려고 할 때 문제가 있습니다. 이 예에서는 "3_"접두사로 파일 만 인쇄하려고합니다. 문제는 3_ 접두사가있는 파일 두 개가 없으면 파일이 인쇄되지 않는다는 것입니다. 나는이 문제를 알아 내기 위해 영원히 주위를 둘러보고 있었다. 파일을 여는 방식에 문제가 있습니까? 디렉토리에 두 개의 파일이있을 때만 작동하며,이 경우 두 파일 중 하나만 인쇄합니다.

편집 : 메시지 상자를 시도했는데 경로가 정확합니다. 파일 이름이 정확합니다. 또한 프린터 폴더에서 프린터를보고 있다면 문서가 잠시 동안 깜박이고 사라집니다 (출력을 볼 수 있도록 인쇄를 일시 중지했습니다). 단어가 나에게 오류를 주면 왜 표시되지 않습니까? 디렉토리에 3_ 접두사가있는 두 개의 파일이있는 경우 왜 이것이 작동합니까?

편집 : 인쇄물 () 메소드의 문제라고 생각합니다. 앱을 표시하고 실행하도록 설정하면 문서가 정상적으로 열리지만 아무것도 인쇄되지 않습니다. 문서를 수동으로 열고 인쇄 할 수 있습니다 (제대로 작동 함).

편집 : 답변에 감사드립니다. printout () 메소드의 배경 매개 변수가 문제였습니다. 인쇄가 완전히 스풀되기 전에이 프로그램이 종료 될 것입니다 (따라서 인쇄 대기열에서 문서 플래시가 표시되고 사라지는 이유입니다. 배경 인쇄를 끄는 것은 문서를 열고 인쇄해야했습니다. 감사합니다. 감사합니다. 감사합니다.

string[] filesToCheck = Directory.GetFiles(clientDirectoryPath);
    Object filename = null;
        for (int i = 0; i < filesToCheck.Count();i++ )
        {
            if(filesToCheck[i].Contains("3_"))
            {
                filename = filesToCheck[i];
                wrdDoc = wrdApp.Documents.Open(ref filename, ref oMissing, ref oTrue, ref oFalse,
                                               ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing);
                wrdDoc.PageSetup.FirstPageTray = letterHeadTray;
                wrdDoc.PageSetup.OtherPagesTray = defaultTray;
                wrdDoc.PrintOut(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing);
                wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
                wrdDoc = null;
            }
        }
도움이 되었습니까?

해결책

시도하고 설정하십시오. 인쇄물() 거짓으로 전화하십시오.

아마도 마지막 인쇄 작업은 COM 개체라는 단어가 너무 일찍 릴리스되면 완전히 스풀링되고 취소되지 않을 것입니다.

다른 팁

사용해보십시오

string[] files = Directory.GetFiles(dir, "3_*.doc");
foreach(string file in files) { }

대신에

for (int i = 0; i < filesToCheck.Count(); i++ ) { }

게시 된 알고리즘에는 아무 문제가없는 것 같습니다. 다음을 시도해 볼 수 있습니다

  1. 중단 점을 추가하고 filestocheck 객체에 모든 파일 이름이 있는지 확인하십시오. 이 값이 잘못되었고 알고리즘을 버릴 수 있습니다.
  2. 문서를 인쇄하는 대신 코드를 변경하여 각 파일 이름에 대한 메시지 상자를 버리십시오. 그러면 실제 인쇄가 문제의 일부가되는 것을 제거합니다 (어떻게 될 수 있는지 보지 못함).

또한 filestocheck 객체를 가져 오는 코드를 게시 할 수 있습니까?

편집하다

OP는 모든 파일이 확실히 통과되고 있다고 언급했습니다. 시도/캐치 블록으로 인쇄 작업을 래핑하고 파일이 인쇄되는 것을 방지하는 예외가 있는지 확인하십시오.

파일 이름으로 "_"를 사용하지 마십시오. 나는 그 충전기와 인쇄물로 전에 이상한 단점을 보았다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top