我有PDFTron的演示项目,并且在我当地的同一项目位置也有Booking.pdf。
我将以下代码写入PDFTron
<html>
<head>
<script src="jquery-1.7.2.min.js"></script>
<script src="lib/WebViewer.js"></script>
<style>
#viewer {
width: 1024px;
height: 600px;
}
</style>
</head>
<body class="page-reader">
<div id="viewer"></div>
</body>
<script>
$(function() {
var viewerElement = document.getElementById("viewer");
var myWebViewer = new PDFTron.WebViewer({
path: "lib",
type: "html5",
documentType: "pdf",
initialDoc: "Booking.pdf"
}, viewerElement);
});
</script>
</html>
现在问题是当我尝试从本地目录加载pdf / xod文件时,它工作正常, 但是假设我想从其他服务器获取PDF文件,例如:http://serverURL/Booking.pdf那时我将服务器路径包含在initialDoc中:“http://serverURL/Booking.pdf”然后它给我错误。
错误是网络错误或未找到。
如何将外部pdf / xod加载到pdftron中?
我提到了以下链接来解决问题,但我无法解决错误。
http://www.pdftron.com/webviewer/demo/documentation.html
http://www.pdftron.com/webviewer/demo/doc/WebViewer_Developer_Guide.pdf
请帮我解决此问题。
答案 0 :(得分:1)
InitialDoc不一定是绝对路径,它可以是某些令牌,即会话中的某些内容等。您可以读取并获取文件二进制文件。在我的情况下,asp.net Web-forms ASMX服务,我使用GET创建一个Web方法,所有PDFViewere都使用指定的intialDoc值进行HTTP GET。你只需要像那样捕捉:
[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true)]
public string GetFile(string token)
{
byte[] fileBinary = null;// Read file here from DB or Service.
if (fileBinary != null)
{
var response = HttpContext.Current.Response;
response.Clear();
response.ContentType = "application/pdf";
response.AddHeader("Content-Length", fileBinary.Length.ToString());
response.OutputStream.Write(fileBinary, 0, fileBinary.Length);
response.Flush();
response.End();
}
//We need to return this for no apparent reason (PDFViewer get action need that).
return token;
}
$(function () {
var customData = { serviceUrl: 'services/PDFWebService.asmx', token: '<%=initialDoc.Value %>', isReadonly: '<%=IsReadonly?"yes":"no" %>' };
var myWebViewer = new PDFTron.WebViewer({
path: "Resources/js/PDFTron",
mobileRedirect: false,
stream: true,
config: 'Resources/js/PDFViewerConfig.js',
documentType: "pdf",
custom: JSON.stringify(customData),
l: '<%=LicenseKey%>',
initialDoc: customData.serviceUrl + '/GetFile?token=' + customData.token
}, document.getElementById('viewer'));
});