2014-02-26 4 views
0

저는 최근에 PowerPoint 프레젠테이션을 자동으로 생성하기 위해 OpenXML SDK를 파고 들기 시작했습니다. 전체 프로세스가 고통스럽고 주말과 마지막 2 일 동안 더 많은 부분을 사용하여 원시 SDK 호출에 사용할 라이브러리를 생성했습니다. 생성 과정에서 모든 것이 잘 작동하는 것처럼 보입니다. Open XML SDK 생산성 도구에서 코드를 올바르게 검증 할 수 있습니다. 그러나 PowerPoint에서 파일을 열면 파일을 열기 전에 파일을 수정하라는 대화 상자가 나타납니다.C#에서 OpenXML SDK를 사용하여 PowerPoint 파일 생성하기. 유효성을 확인했지만 오류로 열림

이 코드는 모두 PowerPoint에서 만든 파일에 반영된 것에서 리팩터링됩니다. Productivity Tool에서 해당 패키지와의 차이점을 비교해 보면 슬라이드 레이아웃 (첫 번째 레이아웃 제외)은 /ppt/slideLayouts/slideLayouts/이고 올바른 프리젠 테이션은 /ppt/slideLayouts/입니다. 나는 생성 코드를 세 번 확인했는데 SlideLayoutPart이 아닌 PresentationPart에 SlideLayout을 추가합니다. 첫 번째 레이아웃이 올바른 위치에 있고 이후의 레이아웃이 올바르지 않기 때문에 특히 이상합니다.

Wouter van Vugt의 MSDN 설명서와 Open XML 전자 서적을 읽었습니다. 필자는 코드를 반사 된 코드와 비교해 보았습니다. (오픈 XML과 PresentationML의 복잡성을 어떻게 생각 하느냐에 따라 많은 것들이 누락 될 수 있습니다. 아무도 여기서 무슨 일이 일어날 지에 대한 통찰력을 가지고 있습니까?

답변

2

많은 시행 착오 끝에 결국 문제를 발견했습니다.

  • SlidePart
  • PresentationPart하려면 SlideLayoutPart
  • SlidePart하려면 SlideMasterPart
  • SlideLayoutPart하려면이이 ThemePart
  • SlideMasterPart에 경우 추가 추가 : 프레젠테이션의 모든 슬라이드, 나는 다음 단계를 따라 슬라이드 마스터가 처음 사용 된 경우 레이아웃에 순환 참조 추가

SlideLayoutPart을 추가하면 내 질문에 설명 된 경로 문제가 발생하므로 OpenXML SDK에 버그가 있어야합니다. 이것이 첫 번째 레이아웃이 항상 올바르게 작동 한 이유입니다 (처음 슬라이드에 추가됨). 처음 4 개의 글 머리 기호가 하나의 루프에 존재하도록 다른 코드가 모든 마스터를 통과하여 연결된 모든 레이아웃을 찾고 사용 된 링크 만 연결하도록 코드를 배열했습니다.

유효성 검사 오류가 없으며 PowerPoint는 첫 번째 시도에서 파일을 완벽하게 엽니 다!

+0

안녕하세요, 저는 slidepart를 프레젠테이션 파트에 추가하면 무슨 뜻인지 알 수 없습니다. 코드 예제와 함께 다시 작성해주십시오. – Sak