導航:首頁 > 文檔加密 > java優化pdf

java優化pdf

發布時間:2023-03-19 15:18:06

A. java代碼doc轉pdf提高效率的方法

使用了jacob.jar來調用activex控制項,本機需安裝WPS或pdfcreator
001 package experiments;
002
003 import com.jacob.activeX.ActiveXComponent;
004 import com.jacob.com.Dispatch;
005 import com.jacob.com.DispatchEvents;
006 import com.jacob.com.Variant;
007 import java.io.File;
008 import java.util.logging.Level;
009 import java.util.logging.Logger;
010
011 public class Doc2Pdf {
012
013 public static Converter newConverter(String name) {
014 if (name.equals("wps")) {
015 return new Wps();
016 } else if (name.equals("pdfcreator")) {
017 return new PdfCreator();
018 }
019 return null;
020 }
021
022 public synchronized static boolean convert(String word, String pdf) {
023 return newConverter("pdfcreator").convert(word, pdf);
024 }
025
026 public static interface Converter {
027
028 public boolean convert(String word, String pdf);
029 }
030
031 public static class Wps implements Converter {
032
033 public synchronized boolean convert(String word, String pdf) {
034 File pdfFile = new File(pdf);
035 File wordFile = new File(word);
036 ActiveXComponent wps = null;
037 try {
038 wps = new ActiveXComponent("wps.application");
039 ActiveXComponent doc = wps.invokeGetComponent("Documents").invokeGetComponent("Open", newVariant(wordFile.getAbsolutePath()));
040 doc.invoke("ExportPdf", new Variant(pdfFile.getAbsolutePath()));
041 doc.invoke("Close");
042 doc.safeRelease();
043 } catch (Exception ex) {
044 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
045 return false;
046 } catch (Error ex) {
047 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
048 return false;
049 } finally {
050 if (wps != null) {
051 wps.invoke("Terminate");
052 wps.safeRelease();
053 }
054 }
055 return true;
056 }
057 }
058
059 public static class PdfCreator implements Converter {
060
061 public static final int STATUS_IN_PROGRESS = 2;
062 public static final int STATUS_WITH_ERRORS = 1;
063 public static final int STATUS_READY = 0;
064 private ActiveXComponent pdfCreator;
065 private DispatchEvents dispatcher;
066 private volatile int status;
067 private Variant defaultPrinter;
068
069 private void init() {
070 pdfCreator = new ActiveXComponent("PDFCreator.clsPDFCreator");
071 dispatcher = new DispatchEvents(pdfCreator, this);
072 pdfCreator.setProperty("cVisible", new Variant(false));
073 pdfCreator.invoke("cStart", new Variant[]{newVariant("/NoProcessingAtStartup"), new Variant(true)});
074 setCOption("UseAutosave", 1);
075 setCOption("UseAutosaveDirectory", 1);
076 setCOption("AutosaveFormat", 0); // 0 = PDF
077 defaultPrinter = pdfCreator.getProperty("cDefaultPrinter");
078 status = STATUS_IN_PROGRESS;
079 pdfCreator.setProperty("cDefaultprinter", "PDFCreator");
080 pdfCreator.invoke("cClearCache");
081 pdfCreator.setProperty("cPrinterStop", false);
082 }
083
084 private void setCOption(String property, Object value) {
085 Dispatch.invoke(pdfCreator, "cOption", Dispatch.Put, new Object[]{property, value}, new int[2]);
086 }
087
088 private void close() {
089 if (pdfCreator != null) {
090 pdfCreator.setProperty("cDefaultprinter", defaultPrinter);
091 pdfCreator.invoke("cClearCache");
092 pdfCreator.setProperty("cPrinterStop", true);
093 pdfCreator.invoke("cClose");
094 pdfCreator.safeRelease();
095 pdfCreator = null;
096 }
097 if (dispatcher != null) {
098 dispatcher.safeRelease();
099 dispatcher = null;
100 }
101 }
102
103 public synchronized boolean convert(String word, String pdf) {
104 File pdfFile = new File(pdf);
105 File wordFile = new File(word);
106 try {
107 init();
108 setCOption("AutosaveDirectory", pdfFile.getParentFile().getAbsolutePath());
109 if (pdfFile.exists()) {
110 pdfFile.delete();
111 }
112 pdfCreator.invoke("cPrintfile", wordFile.getAbsolutePath());
113 int seconds = 0;
114 while (isInProcess()) {
115 seconds++;
116 if (seconds > 30) { // timeout
117 throw new Exception("convertion timeout!");
118 }
119 Thread.sleep(1000);
120 }
121 if (isWithErrors()) return false;
122 // 由於轉換前設置cOption的AutosaveFilename不能保證輸出的文件名與設置的相同(pdfcreator會加入/修改後綴名)
123 // 所以這里讓pdfcreator使用自動生成的文件名進行輸出,然後在保存後將其重命名為目標文件名
124 File outputFile = newFile(pdfCreator.getPropertyAsString("cOutputFilename"));
125 if (outputFile.exists()) {
126 outputFile.renameTo(pdfFile);
127 }
128 } catch (InterruptedException ex) {
129 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
130 return false;
131 } catch (Exception ex) {
132 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
133 return false;
134 } catch (Error ex) {
135 Logger.getLogger(Doc2Pdf.class.getName()).log(Level.SEVERE, null, ex);
136 return false;
137 } finally {
138 close();
139 }
140 return true;
141 }
142
143 private boolean isInProcess() {
144 return status == STATUS_IN_PROGRESS;
145 }
146
147 private boolean isWithErrors() {
148 return status == STATUS_WITH_ERRORS;
149 }
150
151 // eReady event
152 public void eReady(Variant[] args) {
153 status = STATUS_READY;
154 }
155
156 // eError event
157 public void eError(Variant[] args) {
158 status = STATUS_WITH_ERRORS;
159 }
160 }
161
162 public static void main(String[] args) {
163 convert("e:\\test.doc", "e:\\output.pdf");
164 }
165 }

B. java怎麼解決加密的pdf文件過大問題

這個問題好像真的沒辦法解決,如果想從根本上解決IText生成文件過大的問題怕是只能自己生成PDF了,畢竟PDF也是一種語言。壓縮的話,好像也沒有辦法使壓縮過後仍然是PDF,目前壓縮比比較高的方式好像是7z,不過壓縮時間比較長

C. 《實戰Java高並發程序設計》pdf下載在線閱讀全文,求百度網盤雲資源

《實戰Java高並發程序設計》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1ehUuChYRFfDDmSanPkM61w

?pwd=0f5b 提取碼:0f5b
簡介:在單核CPU時代,單任務在一個時間點只能執行單一程序,隨著多核CPU的發展,並行程序開發變得尤為重要。

《實戰Java高並發程序設計(第2版)》主要介紹基於Java的並行程序設計基礎、思路、方法和實戰。第一,立足於並發程序基礎,詳細介紹Java進行並行程序設計的基本方法。第二,進一步詳細介紹了JDK對並行程序的強大支持,幫助讀者快速、穩健地進行並行程序開發。第三,詳細討論了「鎖」的優化和提高並行程序性能級別的方法和思路。第四,介紹了並行的基本設計模式,以及Java8/9/10對並行程序的支持和改進。第五,介紹了高並發框架Akka的使用方法。第六,詳細介紹了並行程序的調試方法。第七,分析Jetty代碼並給出一些其在高並發優化方面的例子。

D. 《Java性能優化權威指南豆瓣》pdf下載在線閱讀全文,求百度網盤雲資源

《Java性能優化權威指南豆瓣》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1Xl5jbp2Ni7vkby8o8iwbEQ

?pwd=vosf 提取碼:vosf
簡介:《Java性能優化權威指南》是Java應用性能調優的聖經,內容通俗易懂,介紹了大量的監控和測量工具,涉及各種硬體架構和操作系統。涵蓋了如何構建實驗、解釋結果以及如何採取行動等技巧。

E. java itextpdf導出pdf文件,數據量太大會內存溢出,有好的辦法沒

確保你的程序本身及時關掉不用的類初始化

試著多分配些內存給這個程序,通過java -Xmx參數來設置

Xmx是java的一個選項,用來設置你的應用程序能夠使用的最大內存數(看好,只是你的應用程序,不是整個jvm),如果你的程序要花很大內存的話,那就需要修改預設的設置,比如配置tomcat的時候,如果流量啊程序啊都很大的話就需要加大這個值了,不過有一點是要記住的,不要大得超過你的機器的內存,那樣你的機器會受不了的,到時候就死翹翹了。
Xms是另一個設置內存的參數,用它來設置程序初始化的時候內存棧的大小,增加這個值的話你的程序的啟動性能會得到提高。不過同樣有前面的限制,以及受到xmx的限制。
不同的虛擬機的實現雖然千差萬別,但是他們的運行模式都是一樣的,只是性能有所不同罷了。
虛擬機只是一個軟體實現,它是一個在內存中的機器,而我們機器上裝的是jre,是為了生成這個jvm用的。通常來說,每次運行一個application都會生成一個jvm,但是也可以有多個程序在同一個jvm裡面。
參考資料: http://www.douban.com/note/128428698/

F. Java能直接修改pdf文件嗎

貌似沒見過這個插件,還有pdf有一部分是根本不能修改的,哪怕用專業工具都不行,如果pdf裡面的文字可以讀取出來,倒是可以導入txt然後就很好修改了,pdf圖文混排,覺得java修改難度較大

G. 如何使用JAVA代碼壓縮PDF文件

用java代碼壓縮應用到程序了,代碼一般是比較復雜的,對pdf文件的mate標簽優化,這類標簽包括三類,pdf文件不是網頁就是個文件,何況我們可以用pdf壓縮工具壓縮,下面有個解決方法,樓主可以做參照。

1:點擊打開工具,打開主頁面上有三個功能進行選擇,我們選擇pdf文件壓縮。

H. 《實戰Java虛擬機JVM故障診斷與性能優化第2版》pdf下載在線閱讀全文,求百度網盤雲資源

《實戰Java虛擬機JVM故障診斷與性能優化第2版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1JIn05G2ORgE1yWT23XUukg

?pwd=ppk1 提取碼: ppk1
簡介:不管技術如何發展,Java依然是一個充滿活力的生態圈,學習Java的人也越來越多,但多數人學習Java虛擬機(JVM)時都會遇到瓶頸。本書將通過200餘個示例詳細介紹JVM中的各種參數配置、故障排查、性能監控及性能優化,幫助Java人突破瓶頸。

I. Java性能優化中文版PDF下載

文件比較大,給你下載地址吧:
http://download.csdn.net/download/hx0_0_8/8434567

閱讀全文

與java優化pdf相關的資料

熱點內容
gcc編譯消耗內存過多 瀏覽:279
昌邑網站製作源碼 瀏覽:127
單片機的反向編譯 瀏覽:463
subsample演算法 瀏覽:899
蘋果免費看書app哪個最好 瀏覽:885
c語言加密怎麼弄 瀏覽:842
c語言編譯的錯誤提示 瀏覽:767
驗機蘋果app哪個最好 瀏覽:666
光遇國際服安卓如何購買禮包 瀏覽:55
163app怎麼下載 瀏覽:247
電腦程序員下場 瀏覽:45
編譯原理ll1文法判斷 瀏覽:727
qt用vs2015編譯 瀏覽:553
結婚日子最好的演算法 瀏覽:794
安卓怎麼把數據傳到蘋果里 瀏覽:504
編譯器標識 瀏覽:792
編程珠璣第三章 瀏覽:785
windows如何開啟tftp伺服器 瀏覽:110
歐姆龍plc編程指令表 瀏覽:189
程序員遠程收入不穩定 瀏覽:863