我有一個包含PDF數據的數據庫。我已經成功地調用了這些數據,並使用Java將它寫到我的硬盤上的PDF文件中。現在,我需要將這些數據發送給Web客戶端,以便將其嵌入到HTML中。我在這個主題上發現了很多不同的帖子,實際上有很多不同的帖子,但它們都在這個主題上有微妙的變化(不同的編碼語言,試圖在新窗口中打開pdf,不同的數據類型),這讓我仍然困惑不解。從Java Sevlet嵌入PDF數據
這是我的Java代碼:
package fullView;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "GetDocuments", urlPatterns = {"/GetDocuments"})
public class GetDocuments extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
ResultSet rs = null;
PreparedStatement prst = null;
String connUrl = "Connection data omitted";
String sql = "select * from Table where type LIKE 'application/pdf%' and id = '5'";
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(connUrl);
prst = conn.prepareStatement(sql);
rs = prst.executeQuery();
File[] files;
while(rs.next()){
byte[] arr = rs.getBytes("data");
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Length", String.valueOf(arr.length));
response.setHeader("Content-Disposition", "inline; filename=\"something.pdf\"");
response.getOutputStream().write(arr);
response.getOutputStream().close();
}
}catch(Exception e){
String error = e.toString();
error = "The Error is: " + error;
error = " " + error;
}
}
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len/2];
for (int i = 0; i < len; i += 2) {
data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
有一個名爲「docHolder」我要嵌入到PDF格。這是幾十種我試圖讓這個WORL
function embedFile(){
$.get("GetDocuments?ER=ER1471378280115", function(responseText){
responseText = b64EncodeUnicode(responseText);
var String = "<object data='data:application/pdf;base64," + responseText + "' type='application/pdf' width='700px%' height='100%'></object>";
$("#docHolder").append(String);
});
}
我取回「responseText的」是「%PDF1.4」字符串類型中的最新產品。此代碼確實呈現PDF,但是它有許多空白頁面。我通過「寫入磁盤」方法確認數據不僅包含空白頁。
你試過PDF.js的依賴? https://mozilla.github.io/pdf.js/ –
我在這拍了一下簡要的進一步期待的意圖,但我的初步印象是,它創建了一個網頁,這是完全是一個PDF,而不是嵌入一個。我會採取更長的期待,看看我是否可以用它來嵌入。 –