2013-01-23 152 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编码器。现在它工作正常。谢谢。 –