今天寫一下PDF在線閱讀的兩種方法:
1. 直接用Object讀取PDF文件(如果機(jī)器上客戶端都安裝了PDF的話)
aspx代碼:
<object id=”pdfObject” width=”80%” height=”80%” classid=” CLSID:CA8A9780-280D-11CF-A24D-444553540000”>
<param name=”SRC” value=”DinnerNow.pdf”>
</object>
其中如果需要從后臺(tái)讀取這個(gè)value值(DinnerNow.pdf)在下面一并描述。
2. 將上傳的PDF文件轉(zhuǎn)換為swf格式之后,用flash閱讀,這樣的話就分兩步,第一步的話就是在上傳文件的時(shí)候?qū)DF轉(zhuǎn)化為swf格式,處理方法如下:
a) 在服務(wù)器機(jī)器上安裝swftools-0.9.1.exe(或者FlashPaper之類的軟件),在這邊我用swftools(如我的文件安裝在C://Program Files//SWFTools)。
b) 客戶端上傳文件(如用FileUpload上傳文件之后,如SaveAs方法之后),調(diào)用服務(wù)器端CMD,代碼如下:
Process p = newProcess();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("cd C://Program Files//SWFTools");
// d://DinnerNow.pdf是服務(wù)器中保存文件的地址(上傳文件到服務(wù)器的哪個(gè)位置)
// d:// DinnerNow.swf是需要將pdf文件轉(zhuǎn)化為swf文件之后的路徑
p.StandardInput.WriteLine("pdf2swf.exe d://DinnerNow.pdf -o d:// DinnerNow.swf -T 9");
p.StandardInput.WriteLine("exit");
p.WaitForExit();
p.Close();
c) 之前兩步做的都是準(zhǔn)備工作,就是將pdf文件轉(zhuǎn)換為swf,接下來就是在線閱讀了,在線閱讀跟第一種方法中一樣,也用object來處理,aspx代碼如下:
<div>
<script type="text/javascript">
document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="50%" height="50%" codebase=");
document.write('<param name="MOVIE" value=' + src + '>');
</script>
</div>
那么其中的src怎么得到呢,可以在aspx.cs后臺(tái)傳到前臺(tái)去,如重寫一個(gè)OnPreRender方法:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Page.ClientScript.RegisterClientScriptBlock(GetType(), "swfSrc", "<script type=/"text/javascript/">var src = 'DinnerNow.swf';</script>");
}
留言反饋