即時通訊編寫一個將PPT文件中的幻燈片轉換爲PNG的小工具,我遇到的問題是隱藏幻燈片。如何將幻燈片更改爲在Java中可見?我目前使用Apache POI轉換爲PNG,雖然這不適用於剪貼畫,所以我很想用unoconv先將它導出爲PDF,然後將其縮小。但是像這樣做並沒有考慮到所有隱藏的幻燈片。那麼我怎樣才能以編程方式將隱藏的幻燈片更改爲可見?以編程方式取消隱藏PPT文件中的幻燈片
2
A
回答
2
這是一種黑客攻擊,並且已經使用POI 3.9/POI-Scratchpad 3.8的Libre Office的PPT進行過測試。
的spec([MS-PPT] .PDF/3.0版本/ 201頁)指出,該位3字節18 指定相應滑動是否是隱藏的,在幻燈片放映期間不顯示的(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
我已經提交了一個[補丁#55560](https://issues.apache.org/bugzilla/show_bug.cgi?id=55560)。讓我們看看它何時被整合... – kiwiwings
相關問題
- 1. 以編程方式隱藏和取消隱藏按鈕
- 2. 插入幻燈片到ppt
- 3. C# - 以編程方式推進Powerpoint幻燈片的方式?
- 4. 從.PPT提取信息幻燈片
- 5. jquery隱藏工程,但幻燈片不
- 6. 導出投影儀幻燈片,以幻燈片編輯格式
- 7. 如何創建PPT幻燈片編程方式使用OPENXML在asp.net
- 8. Aspose幻燈片包含svg到ppt幻燈片
- 9. 如何通過幻燈片放映方式在網頁中顯示.ppt文件
- 10. Powershell - 計數隱藏的Powerpoint幻燈片
- 11. 以編程方式將PowerPoint幻燈片的內容提取爲MS Word格式?
- 12. 以編程方式將新幻燈片插入到演示文稿時隱藏背景圖形
- 13. 如何從iPhone或iPad的ppt文件中獲取幻燈片中的圖像?
- 14. 如何識別選定的幻燈片是PowerPoint 2003中的主幻燈片以編程方式
- 15. 如何以編程方式移動到下一張幻燈片?
- 16. PowerPoint插件:以編程方式將幻燈片發佈爲演示文稿
- 17. jQuery隱藏顯示幻燈片懸停
- 18. Bakground圖像div隱藏jquery幻燈片
- 19. 幻燈片顯示/隱藏工具箱
- 20. 顯示/隱藏和幻燈片表
- 21. jquery div幻燈片隱藏子元素
- 22. jQuery幻燈片和顯示/隱藏div
- 23. 隱藏並顯示幻燈片效果
- 24. jquery幻燈片隱藏可見性?
- 25. UISplitViewController - 隱藏主幻燈片視圖
- 26. 檢測PowerPoint幻燈片是否隱藏
- 27. 使用AppleScript隱藏主題文本字段以幻燈片
- 28. 用python創建多個ppt幻燈片
- 29. 編程提取幻燈片從
- 30. 爲什麼我的循環幻燈片隱藏所有幻燈片?
每張幻燈片都有一個.SlideShowTransition.Hidden屬性(布爾值),用於判斷它是否隱藏。 –
@SteveRindsberg這種方法在哪裏? – Dean
它是PowerPoint對象模型的一部分。不管POI和Java是否允許你訪問,我都不知道。如果您有權訪問PPTX文件中的XML,則slidenn.xml文件將以類似於以下內容的格式開始: