2013-01-23 219 views
0

在我的web應用程序中,根據需要,我需要將PDF文件打印到激光打印機,而無需打開Windows默認的「打印」彈出窗口。如何將PDF字節[]轉換爲字符串並將字符串轉換爲PDF字節[]

所以這裏我使用小程序來打印存儲在HTML文本區域中的字節。

但似乎新字符串(pdf.getByte [])後生成的字節不同於實際的PDF字節。

在我的控制,我存儲要求範圍字節以下提到:

request.setAttribute(PageRenderConstant.MULTI_SEL_PDF,new String(printOutputVO.getPdfBytes())); 

而在HTML ...我存儲爲下面的字節..

<textarea style="visibility: hidden;" name="laserPrintData" id="laserPrintData" > 
    ${multiselpdffile}     
</textarea> 

這裏是小程序代碼打印文件激光pritner ...

function print(){               
    var applet = document.jZebra; 
    if (applet != null) {  
    var data = $("#laserPrintData").val(); 
    //applet.append(data); 
    applet.appendPDF(data);    
    applet.printPS(); 
    } 
} 

但它說:「提供的PDF是損壞的fi樂「。所以新的String()操作之後的字節是不同的。

那麼如何保留與新的String()操作前相同的字節?

回答

0

使用Base64編碼方法,將字節[]爲String和回解碼爲byte []

public static byte[] decode(String encoded) 
public static String encode(byte[] binaryData) { 
+0

感謝您的答覆。現在我已經使用了64位編碼器和解碼器。對於編碼,我在我的控制器上使用了sun.misc.BASE64Encoder。而在客戶端,我使用的是JQuery 64位解碼器。但它不工作。 JQuery解碼器不解碼由sun.misc.BASE64Encoder編碼的字符串。你可以有任何想法爲什麼它不支持? –

+0

@GunjanShah你可以檢查編碼器如何創建字符串並實現自己的解碼。例如查看sun's lib的解碼方法的代碼。 – StanislavL

+0

ohk ...這是解碼器的問題。現在我使用apache.codec.Base64編碼器。現在它工作正常。謝謝。 –