PPT 파일의 슬라이드를 png로 변환하는 작은 도구를 쓰고 있는데 문제는 숨겨진 슬라이드 때문입니다. Java에서 슬라이드를 표시하도록 변경하려면 어떻게해야합니까? 현재 PNG 로의 변환을 위해 Apache POI를 사용하고 있습니다. 클립 아트에서는 작동하지 않지만 unconv를 사용하여 PDF로 내보내기를 시도한 다음이를 minipulating하는 것으로 유혹됩니다. 그러나 이렇게하면 모든 숨겨진 슬라이드를 고려하지 않습니다. 그렇다면 어떻게 숨겨진 슬라이드를 프로그램 적으로 변경할 수 있습니까?프로그래밍 방식으로 PPT 파일의 슬라이드 숨기기 취소
2
A
답변
2
이것은 해킹의 일종이며 POI 3.9/POI-Scratchpad 3.8이 설치된 Libre Office의 PPT로만 테스트되었습니다.
18 는 대응하는 슬라이드 숨김 및 슬라이드 쇼 동안 표시되어 있는지의 여부를 지정하는 바이트 spec ([MS-PPT] .PDF/버전 3.0/201 페이지)를 말한다, 즉 비트 3 (fHidden)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.lang.reflect.Field;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.record.RecordTypes;
import org.apache.poi.hslf.record.UnknownRecordPlaceholder;
import org.apache.poi.hslf.usermodel.SlideShow;
public class UnhidePpt {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("hiddenslide.ppt");
SlideShow ppt = new SlideShow(fis);
fis.close();
Field f = UnknownRecordPlaceholder.class.getDeclaredField("_contents");
f.setAccessible(true);
for (Slide slide : ppt.getSlides()) {
for (Record record : slide.getSlideRecord().getChildRecords()) {
if (record instanceof UnknownRecordPlaceholder
&& record.getRecordType() == RecordTypes.SSSlideInfoAtom.typeID) {
UnknownRecordPlaceholder urp = (UnknownRecordPlaceholder)record;
byte contents[] = (byte[])f.get(urp);
contents[18] &= (255-4);
f.set(urp, contents);
}
}
}
FileOutputStream fos = new FileOutputStream("unhidden.ppt");
ppt.write(fos);
fos.close();
}
}
+0
[patch # 55560] (https://issues.apache.org/bugzilla/show_bug.cgi?id=55560)을 제출했습니다. 그것이 통합되면 볼 수 있습니다 ... – kiwiwings
관련 문제
- 1. 프로그래밍 방식으로 앱 숨기기
- 2. 프로그래밍 방식으로 SharePoint Workflow 취소
- 3. 프로그래밍 방식으로 위젯 등록 취소
- 4. NSStatusItem에서 프로그래밍 방식으로 NSMenu 숨기기
- 5. 프로그래밍 방식으로 스프레드 시트 숨기기
- 6. 불완전한 요소를 프로그래밍 방식으로 숨기기
- 7. 아이폰에서 ppt 슬라이드 쇼를 보여주는 방법?
- 8. .ppt 파일의 특정 슬라이드에 어떻게 하이퍼 링크합니까?
- 9. 탭 슬라이드 아웃 플러그인이 프로그래밍 방식으로 삽입됩니다.
- 10. - 프로그래밍 방식으로 Powerpoint 슬라이드 쇼를 진행하는 방법?
- 11. 프로그래밍 방식으로 슬라이드/스크롤 jqTouch 요소
- 12. 프로그래밍 방식으로 터치를 취소 할 수 있습니까?
- 13. NSTextView의 텍스트를 프로그래밍 방식으로 선택 취소 하시겠습니까?
- 14. 숨기기 숨기기 취소 div 태그의
- 15. ExtJS.Toolbar 단추를 프로그래밍 방식으로 표시/숨기기 방법
- 16. HTML5 비디오 - 프로그래밍 방식으로 컨트롤 표시/숨기기
- 17. WordPress : 프로그래밍 방식으로 게시물 창에서 위젯 숨기기
- 18. Mac OS X에서 도크를 프로그래밍 방식으로 숨기기
- 19. 콘텐츠 형식 필드를 프로그래밍 방식으로 숨기기
- 20. 프로그래밍 방식으로 슬라이딩 서랍의 핸들 숨기기
- 21. 드루팔 (Drupal에서 프로그래밍 방식으로 숨기기 버튼 표시하기
- 22. Excel에서 프로그래밍 방식으로 활성 통합 문서 숨기기
- 23. MS-Access에서 프로그래밍 방식으로 열 숨기기
- 24. iPhone - 보조적으로 보조 프로그램보기를 프로그래밍 방식으로 숨기기
- 25. javascript 'this'issue : 프로그래밍 방식으로 jQuery 스포트라이트 숨기기
- 26. 프로그래밍 방식으로 회 전자 목록 숨기기
- 27. 클릭 애니메이션으로 프로그래밍 방식으로 파워 포인트 슬라이드 쇼 진행
- 28. 프로그래밍 방식으로 파일의 인코딩을 찾는 방법은 무엇입니까?
- 29. 손상시키지 않고 파일의 해시를 프로그래밍 방식으로 변경
- 30. Excel 파일의 시트 이름을 프로그래밍 방식으로 변경
각 슬라이드에는 숨김 여부를 제어하는 .SlideShowTransition.Hidden 속성 (부울)이 있습니다. –
@SteveRindsberg이 방법은 어디에 있습니까? – Dean
PowerPoint 개체 모델의 일부입니다. POI와 Java가 당신에게 그것에 대한 액세스를 제공하든 그렇지 않든간에 나는 잘 모른다. PPTX 파일의 XML에 액세스 할 수있는 경우 slidenn.xml 파일은 다음과 같이 시작합니다.