① 在linux環境下,java怎麼實現從word格式轉換為pdf格式
linux環境下,word格式轉換為pdf格式
word轉換到PDF的步驟就相對簡單了,我們只需要安裝一款虛擬列印機軟體「Virtual Pdf Printer」即可,它可以將你編輯好的word文檔直接輸出為PDF文件格式。
安裝後在word中點擊「打開」→「列印」,
在「列印機名稱」中會看到多了一個「Virtual Printer」選項,
選中它,點擊確定後(未注冊版本有10秒的等待時間),
彈出「保存PDF文件」對話框,先選擇文件的保存路徑,
再點擊「生成設置」按鈕,彈出「系統設置」面板,
對輸出後的PDF文件進行加密和字體等設置,
點擊兩次確定,當前的word文檔就被轉換成PDF格式的文件了.
② c#代碼翻譯成java
1、Java Language Conversion Assistant
Java Language Conversion Assistant是一款最出色和最受歡迎的Eclipse插件,它可以用一些簡單的語法實現Java代碼轉換成C#代碼。有些語法可以忽略文件、忽略類、合並類,或者將特殊的方法翻譯成.NET的事件和屬性。
2、Octopus .NET Translator
這是一個商業軟體,不僅支持Java代碼轉換成C#代碼,而且支持Java代碼轉換成C++,C#代碼轉換成VB.NET,以及VB.NET轉換成C#。該軟體主要提供一系列語法轉換器,並且轉換質量和速度都很不錯。
3、Tangible Solution』s Java to C# Converter
這款Java轉換C#的工具提供了商業版和免費版,免費版僅支持1000行的代碼轉換,但是這款軟體的轉換結果非常精確而且全面。該免費版軟體可以將整個Java文件目錄轉換成C#文件,並且支持自定義設置,也可以添加註釋。對任何一個C#初學者來說,它都是一款很不錯的學習工具。
4、XES – Java To C#
這款Java轉換C#工具以使用方便而著稱,該工具可以提供一個准備的轉換結果,並且讓轉換恰到好處,這款工具對初學者來說相當的方便。
5、varycode
Verycode是一個最好的在線代碼轉換平台,支持對c#, VB, Java, Ruby , Python等編程語言之間的轉換
③ java使用jodconverter包實現office轉pdf的時候,報錯文件格式錯誤是為什麼啊
1 有幾種原因可以參考一下:
1)從資料庫讀取出來的內容 與 寫死的文件名是否 物理一致,即是否是其他編碼。
2)注意從資料庫讀取出來的字元串是否在前後有多餘的空格,即驗證其長度
3)查找物理位置上的文件是否真的存在。
4) 是否能夠連接到soffice上,soffice是否啟動了多次。
5) 我曾經遇到的問題是:在應用程序中寫死的和從資料庫讀取的一樣,但在系統磁碟上所保存的就不是這個文件名,而是某種編碼的字元。
正確代碼如下;
* 將Office文檔轉換為PDF. 運行該函數需要用到OpenOffice, OpenOffice下載地址為
* http://www.openoffice.org/
*
* <pre>
* 方法示例:
* String sourcePath = "F:\\office\\source.doc";
* String destFile = "F:\\pdf\\dest.pdf";
* Converter.office2PDF(sourcePath, destFile);
* </pre>
*
* @param sourceFile
* 源文件, 絕對路徑. 可以是Office2003-2007全部格式的文檔, Office2010的沒測試. 包括.doc,
* .docx, .xls, .xlsx, .ppt, .pptx等. 示例: F:\\office\\source.doc
* @param destFile
* 目標文件. 絕對路徑. 示例: F:\\pdf\\dest.pdf
* @return 操作成功與否的提示信息. 如果返回 -1, 表示找不到源文件, 或url.properties配置錯誤; 如果返回 0,
* 則表示操作成功; 返回1, 則表示轉換失敗
*/
public static int office2PDF(String sourceFile, String destFile) {
try {
File inputFile = new File(sourceFile);
if (!inputFile.exists()) {
return -1;// 找不到源文件, 則返回-1
}
// 如果目標路徑不存在, 則新建該路徑
File outputFile = new File(destFile);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
String OpenOffice_HOME = "D:\\Program Files\\OpenOffice.org 3";//這里是OpenOffice的安裝目錄, 在我的項目中,為了便於拓展介面,沒有直接寫成這個樣子,但是這樣是絕對沒問題的
// 如果從文件中讀取的URL地址最後一個字元不是 '\',則添加'\'
if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {
OpenOffice_HOME += "\\";
}
// 啟動OpenOffice的服務
String command = OpenOffice_HOME
+ "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
Process pro = Runtime.getRuntime().exec(command);
// connect to an OpenOffice.org instance running on port 8100
OpenOfficeConnection connection = new SocketOpenOfficeConnection(
"127.0.0.1", 8100);
connection.connect();
// convert
DocumentConverter converter = new OpenOfficeDocumentConverter(
connection);
converter.convert(inputFile, outputFile);
// close the connection
connection.disconnect();
// 關閉OpenOffice服務的進程
pro.destroy();
return 0;
} catch (FileNotFoundException e) {
e.printStackTrace();
return -1;
} catch (ConnectException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return 1;
}
④ 在java中,怎麼把繁體字轉化為簡體字
實現思路一:採用字元串的方式實現
[java]viewplain
packagecom.bzu.converter;
importjava.util.Scanner;
/**
*思路一:採用字元串的方式實現
*/
publicclassJianFanConvert1{
publicstaticfinalStringjianti="萬與丑專業叢東絲";
publicstaticfinalStringfanti="萬與丑專業叢東絲";
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println("請輸入你想轉換的句子");
Stringwords=input.next();
for(inti=0;i<words.length();i++){
chartempChar=words.charAt(i);
intposition=jianti.indexOf(tempChar);//此方法調用時間復雜度為O(n)
charfantiChar;
if(position==-1){
fantiChar=tempChar;
}else{
fantiChar=fanti.charAt(position);
}
System.out.print(fantiChar);
}
}
}
分析上述實現,時間復雜度為O(n*n),當問題規模擴大時會非常耗時。
實現思路二:採用哈希演算法實現
1.哈希方法
哈希方法在就是在鍵和值之間建立一個確定的對應函數關系hash(),就是key向value的換算關系,使得每一個鍵與結構中的一個唯一的存儲位置相對應:值的存儲位置=hash(鍵)即Value的位置=hash(key)
例如有一組「鍵值對」:<5,」tom」>、<8,」Jane」>、<12,」Bit」>、<17,」Lily」>、<20,」sunny」>,我們按照如下哈希函數對鍵進行計算:hash(x)=x%17+3,得出如下結果:hash(5)=8、hash(8)=11、hash(12)=15、hash(17)=3、hash(20)=6。
我們把<5,」tom」>、<8,」Jane」>、<12,」Bit」>、<17,」Lily」>、<20,」sunny」>分別放到地址為8、11、15、3、6的位置上。當要檢索17對應的值的時候,只要首先計算17的哈希值為3,然後到地址為3的地方去取數據就可以找到17對應的數據是「Lily」了。
使用哈希方法,查詢的時間復雜度為O(1),能夠直接定位其位置,大大加快數據的查詢速度。
2.哈希表
將數據採用哈希演算法進行保存的數據結構就是哈希表,常見操作put、get、remove。
Java中的HashMap使用(Java內置的哈希表數據結構)
HashMap的主要方法
intsize():得到Map中「鍵-值對」的數量
booleanisEmpty():Map是否是空的,也就是是否不含有任何「鍵-值對」
booleancontainsKey(Objectkey):Map中是否含有以key為鍵的「鍵-值對」
booleancontainsValue(Objectvalue):Map中是否含有以value為值的「鍵-值對」
Objectget(Objectkey):從Map中得到以key為鍵的值,如果Map中不含有以key為鍵的「鍵-值對」則返回null
Objectput(Objectkey,Objectvalue):向Map中存儲以key為鍵、value為值的「鍵-值對」
Objectremove(Objectkey):從Map中移除以key為鍵的「鍵-值對」
voidclear():清除所有「鍵-值對」
SetkeySet():得到所有的鍵
Collectionvalues():得到所有的值
SetentrySet():得到所有的「鍵-值對」,Set中的類型是Map.Entry
[java]viewplain
packagecom.bzu.converter;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Scanner;
/**
*思路二:採用哈希演算法實現
*/
publicclassJianFanConvert2{
publicstaticfinalStringjianti="萬與丑專業叢東絲";
publicstaticfinalStringfanti="萬與丑專業叢東絲";
publicstaticvoidmain(String[]args){
Map<Character,Character>map=newHashMap<Character,Character>();
for(inti=0;i<jianti.length();i++){
map.put(jianti.charAt(i),fanti.charAt(i));
}
Scannerinput=newScanner(System.in);
System.out.println("請輸入你想轉換的句子");
Stringwords=input.next();
/**
*為了測試隨著問題規模的擴大用時
*/
for(inti=0;i<10;i++){
words=words+words;
}
longbegin=System.currentTimeMillis();
for(inti=0;i<words.length();i++){
chartempChar=words.charAt(i);
Charactercharacter=map.get(tempChar);
charfantiChar;
if(character==null){
fantiChar=tempChar;
}else{
fantiChar=character;
}
System.out.print(fantiChar);
}
longend=System.currentTimeMillis();
System.out.println(" 用時:"+(end-begin));
}
}
分析上述演算法實現,時間復雜度變為o(n)
問題探討:
為什麼演算法復雜度由O(n*n)變成O(n),但是實際執行時間沒有明顯的變化?
print,數據在CPU、內存中運算都非常快,一旦與外設(列印機、網路(網卡)、顯示設備(顯卡))交換數據,速度就會慢很多
來自
junjunguoguo的專欄
⑤ Java中有Converter這個函數嗎怎麼使用
converter是java中的轉換器,負責數據類型的轉換。