導航:首頁 > 文檔加密 > aspnet顯示pdf

aspnet顯示pdf

發布時間:2023-06-29 06:16:05

⑴ .net如何將頁面生成pdf

using System;
using System.IO;
using System.Text;
using System.Collections;

namespace PDFGenerator
{

public class PDFGenerator
{
static float pageWidth = 594.0f;
static float pageDepth = 828.0f;
static float pageMargin = 30.0f;
static float fontSize = 20.0f;
static float leadSize = 10.0f;

static StreamWriter pPDF=new StreamWriter("E:\\myPDF.pdf");

static MemoryStream mPDF= new MemoryStream();

static void ConvertToByteAndAddtoStream(string strMsg)
{
Byte[] buffer=null;
buffer=ASCIIEncoding.ASCII.GetBytes(strMsg);
mPDF.Write(buffer,0,buffer.Length);
buffer=null;
}

static string xRefFormatting(long xValue)
{
string strMsg =xValue.ToString();
int iLen=strMsg.Length;
if (iLen<10)
{
StringBuilder s=new StringBuilder();
int i=10-iLen;
s.Append('0',i);
strMsg=s.ToString() + strMsg;
}
return strMsg;
}

static void Main(string[] args)
{
ArrayList xRefs=new ArrayList();
//Byte[] buffer=null;
float yPos =0f;
long streamStart=0;
long streamEnd=0;
long streamLen =0;
string strPDFMessage=null;
//PDF文檔頭信息
strPDFMessage="%PDF-1.1\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="1 0 obj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="<< /Length 2 0 R >>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="stream\n";
ConvertToByteAndAddtoStream(strPDFMessage);
////////PDF文檔描述
streamStart=mPDF.Length;
//字體
strPDFMessage="BT\n/F0 " + fontSize +" Tf\n";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文檔實體高度
yPos = pageDepth - pageMargin;
strPDFMessage=pageMargin + " " + yPos +" Td\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= leadSize+" TL\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);

//實體內容
strPDFMessage= "(http://www.wenhui.org)Tj\n" ;
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage= "ET\n";
ConvertToByteAndAddtoStream(strPDFMessage);
streamEnd=mPDF.Length;

streamLen=streamEnd-streamStart;
strPDFMessage= "endstream\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);
//PDF文檔的版本信息
xRefs.Add(mPDF.Length);
strPDFMessage="2 0 obj\n"+ streamLen + "\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="3 0 obj\n<</Type/Page/Parent 4 0 R/Contents 1 0 R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="4 0 obj\n<</Type /Pages /Count 1\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Kids[\n3 0 R\n]\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/Resources<</ProcSet[/PDF/Text]/Font<</F0 5 0 R>> >>\n";
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="/MediaBox [ 0 0 "+ pageWidth + " " + pageDepth + " ]\n>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="5 0 obj\n<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding/WinAnsiEncoding>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

xRefs.Add(mPDF.Length);
strPDFMessage="6 0 obj\n<</Type/Catalog/Pages 4 0 R>>\nendobj\n";
ConvertToByteAndAddtoStream(strPDFMessage);

streamStart=mPDF.Length;
strPDFMessage="xref\n0 7\n0000000000 65535 f \n";
for(int i=0;i<xRefs.Count;i++)
{
strPDFMessage+=xRefFormatting((long) xRefs[i])+" 00000 n \n";
}
ConvertToByteAndAddtoStream(strPDFMessage);
strPDFMessage="trailer\n<<\n/Size "+ (xRefs.Count+1)+"\n/Root 6 0 R\n>>\n";
ConvertToByteAndAddtoStream(strPDFMessage);

strPDFMessage="startxref\n" + streamStart+"\n%%EOF\n";
ConvertToByteAndAddtoStream(strPDFMessage);
mPDF.WriteTo(pPDF.BaseStream);

mPDF.Close();
pPDF.Close();
}
}

另外:C#中生成PDF文件的方法挺多,可以使用iTextSharp控制項,還有aspose的控制項也可以。這些控制項的功能都很強大,所以控制項的大小也會很大

⑵ aspnet_client 的作用以及存儲位置

在虛擬主機的 wwwroot 目錄下您會發現有一個名為 aspnet_client 的文件夾,該文件夾中含有集成了 ASP.NET 的「SmartNavigation」功能的 javascript。如果啟用 SmartNavigation,網頁設計人員就可以在頁面以及其他內容之間保持滾動條和元素焦點的位置。

目錄 aspnet_client 是虛擬根 Web 應用程序目錄,該目錄是當您安裝 .NET Framework SDK 或 Visual Studio .NET 時在您的計算機上創建的。此文件不佔用戶空間,請用戶在使用網站空間的時候不要刪除該文件夾。

例如,隨 ASP.NET 附帶的腳本文件位於以下位置。

d:\home\ftp用戶名/wwwroot/aspnet_client/system_web/<版本編號>/文件

如果安裝有 SDK 的多個版本,您將在 aspnet_client/system_web 下看到多個子目錄。因為控制項庫與腳本文件的特定版本相關聯,所以部署模式允許控制項庫的不同版本並行運行。 出現了「aspnet_client」這個文件夾,是干什麼的?

這個是文件的路徑下還有文件!下面的完整路徑:
aspnet_client\system_web\1_1_4322

裡面還有三個文件:SmartNav.htm,smartnav.js,webuivalidation.js!

作用是:安裝了.net框架之後,就會在網站目錄下出現這樣的文件夾.用以支持.net環境.1_1_4322表示你的.net framework 的版本為 1.1.4322,裡面的3個文件用於為.net驗證控制項提供腳本支持伺服器裡面裝了.net後,會在伺服器上每個網站的目錄裡面增加這個文件夾的 在生成虛擬站點的時候會自動在根下生成一個名字為aspnet_client的文件夾,你看看是不是這個文件夾沒有了?
解決辦法重新建一個獨立站點,把生成的aspnet_client文件夾復制到這個站點的跟下。

首先確定你安裝了iis
然後從命令行進入文件夾C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\
盤符,系統文件夾,版本號可能不一樣,看你自己的機子,版本號選擇最高的那個文件夾
運行命令aspnet_regiis.exe -i
安裝完畢即可使用vs打開
一點資料:

aspnet_regiis命令詳解.
用法:
aspnet_regiis.exe[-i[r][-enable]|-u[a]|-r|-s[n]|-k[n]|-lv|-lk|-c|-e[a]|-?]
-i-安裝ASP.NET的此版本,並更新IIS元資料庫根處的
腳本映射和根以下的所有
腳本映射。現有的低版本腳本映射
升級到此版本。
-ir-安裝ASP.NET的此版本,僅注冊。不
更新IIS中的腳本映射。
-enable-帶-i或-ir指定-enable時,還將
在IIS安全控制台(IIS6.0或更高版本)中啟用ASP.NET。
-s-在指定的路徑以遞歸方式安裝此版本
的腳本映射。現有的低版本腳本映射
升級到此版本。
例如aspnet_regiis.exe-sW3SVC/1/ROOT/SampleApp1
-sn-在指定的路徑以非遞歸方式安裝此版本的
腳本映射。現有的低版本腳本映射
升級到此版本。
-r-為IIS元資料庫根位置的此版本
以及根以下的所有腳本映射安裝腳本映射。不論當前版本是什麼,
所有現有的腳本映射都
更改為此版本。
-u-卸載ASP.NET的此版本。到此版本的
現有腳本映射重新映射到此計算機上安裝的
其餘的最高ASP.NET版本。
-ua-卸載計算機上的所有ASP.NET版本
-k-從指定的路徑中以遞歸方式移除到任何ASP.NET版本的所有
腳本映射。
例如aspnet_regiis.exe-kW3SVC/1/ROOT/SampleApp1
-kn-從指定的路徑中以非遞歸方式移除到任何ASP.NET版本的所有
腳本映射。
-lv-列出計算機上安裝的所有
ASP.NET版本(包括狀態和安裝路徑)。
Status:Valid[(Root)]|Invalid
-lk-列出包含ASP.NET腳本映射的所有IIS元資料庫項的所有路徑
(連同版本一起)。不顯示從父項
繼承ASP.NET腳本映射的項。
-c-將客戶端腳本的此版本安裝到
每個IIS站點目錄的aspnet_client子目錄中。
-e-從每個IIS站點目錄的
aspnet_client子目錄中
移除客戶端腳本的此版本。
-ea-從每個IIS站點目錄的aspnet_client子目錄中
移除客戶端腳本的所有版本。
-?-列印此幫助文本。

example:
當系統新建一個asp.netweb應用程序的時候,提示錯誤信息如下:
"VisualStudio.NET已檢測到指定的Web伺服器運行的不是ASP.NET版本,你將無法運行ASP.NET應用程序或服務。"

可以嘗試運行
aspnet_regiis-i
aspnet_regiis-r
兩個命令來安裝asp.net服務管理器.
如果還是不行的話,再嘗試一下下面的操作:
1、先確定是不是1.1
2、把"IP地址"設成全部未分配
3、在IE連接設置中把本地地址不使用代理伺服器那裡打上勾

⑶ asp.net的配置文件web.config怎麼解密

使用「」形式來加密
test.aspx程序文件基本如上,

section.SectionInformation.ProtectSection(「」);
改成
section.SectionInformation.ProtectSection(「」);
但這個時候你訪問網站的時候很有可能會出現
說明:
在處理向該請求提供服務所需的配置文件時出錯。請檢查下面的特定錯誤詳細信息並適當地修改配置文件。
分析器錯誤信息: 未能使用提供程序「」進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
這樣的錯誤,解決方法是:
進dos運行:aspnet_regiis -pa 「NetFrameworkConfigurationKey」
「NT AUTHORITY\NETWORK SERVICE」
如果運行出錯,需要把目錄 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
放入環境變數path中。此時就可以成功訪問網站了。
同樣可以通過命令行來實現「」加密
注意:你也可以不運行 aspnet_regiis -pa 「NetFrameworkConfigurationKey」
「NT AUTHORITY\NETWORK SERVICE」命令來注冊默認的
的RSA 密鑰容器
方法如下:
1)創建一個可導出的rsa密鑰容器,命名為Key
aspnet_regiis -pc 「Key」 -exp
2)在你要加密的信息前面指定密鑰容器,如:
<configProtectedData><providers><clear /><add name=」KeyProvider」 type=」System.Configuration., System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL」 keyContainerName=」Key」 useMachineContainer=」true」/></providers></configProtectedData><connectionStrings><add name=」SQLConnString」 connectionString=」Data Source=yourIP;Initial Catalog=test;User Id=yourID;Password=yourPassword;」providerName=」System.Data.SqlClient」 /></connectionStrings>
並且確保在configuration節的xmlns屬性有如下值:
3)對配置文件進行加密
aspnet_regiis -pef 「connectionStrings」 「E:\project\Test」 -prov 「KeyProvider」
參數分別為:需要加密的配置節、項目所在目錄的物理路徑、加密所使用的密鑰容器名稱
再看web.config文件,就會發現connectionStrings節已經被加密了,但
是運行程序會發現程序仍然可以正確訪問資料庫。
此時,只需運行:
aspnet_regiis -pdf 「connectionStrings」 「E:\project\Test」
就可以對web.config文件進行解密。
(注意,如果還是有錯誤,那可能是您沒有給生成的密匙文件足夠的許可權,
去到C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
目錄下,找到剛生成的密匙文件,把network service用戶的讀取許可權賦予給它,就可以了,
直接用命令的話也可以:命令如下 aspnet_regiis -pa 「Key」 「NT AUTHORITY\NETWORK SERVICE」 ,
可能需要重新啟動iis
4)把密鑰容器導出為xml文件
aspnet_regiis -px 「Key」 「e:\Key.xml」
這個命令只導出公鑰,因此以後只能用於加密,而無法解密。
aspnet_regiis -px 「Key」 「e:\Keys.xml」 -pri
這個則連私鑰一起導出了,所以我們要用這個。
5)把密鑰容器刪除
aspnet_regiis -pz 「Key」
刪除後再運行程序,會提示出錯:
分析器錯誤信息: 未能使用提供程序「KeyProvider」進行解密。
提供程序返回錯誤信息為: 打不開 RSA 密鑰容器。
同理可以證明,在任何一台未安裝正確的密鑰容器Key的機器上,
程序都無法對connectionStrings節進行解密,因此也就無法正常運行。
6)導入key.xml文件
aspnet_regiis -pi 「Key」 「e:\Keys.xml」
此時,再運行程序會發現又可以解密了。證明加密與解密機制運行正常。
最後說一下這個機制所提供的安全性保障可以運用在什麼方面:
對winform程序的app.config進行加密實際意義並不大,因為無論如何,
客戶機都可以通過運行aspnet_regiis -pdf 來對配置文件進行解密,從而暴露敏感信息。
對於web.config進行加密的意義也僅限於,當web.config文件不小心泄露時,
不會同時泄露敏感信息,如果惡意攻擊者已經取得了在伺服器上運行程序的許可權,
那麼同app.config一樣,可以很容易通過通過運行aspnet_regiis -pdf 獲取明文了。
還有,通過aspnet_regiis -pa 「Key」 「NT AUTHORITY\NETWORK SERVICE」
控制對不同用戶對密鑰容器的訪問許可權,應該還可以進一步獲取一些安全性,
比如可以控制某些用戶即使登錄到伺服器上,也無法用aspnet_regiis -pdf對配置文件進行解密。

閱讀全文

與aspnet顯示pdf相關的資料

熱點內容
怎麼下載掃描二維碼的手機app 瀏覽:725
雲伺服器創建私有鏡像的時候一定要關機嗎 瀏覽:112
php開發學習門戶 瀏覽:385
傳奇游戲伺服器怎麼設置 瀏覽:823
敲擊東西解壓完整版 瀏覽:401
刺絡學pdf 瀏覽:868
怎麼給手機文件夾設置封面 瀏覽:931
汽車保養app怎麼用 瀏覽:62
線程javalock 瀏覽:896
c語言編譯運行結果查看器 瀏覽:112
androidpx轉dip 瀏覽:841
西藏編譯局是什麼級別 瀏覽:1001
php提交代碼 瀏覽:597
如何用命令查找並刪除代碼塊 瀏覽:582
python初學路線圖 瀏覽:534
matlab遺傳演算法旅行商問題 瀏覽:304
將辦公軟體加入加密軟體的進程 瀏覽:724
聯想小新pro14編譯器 瀏覽:462
為什麼伺服器要關掉icmp協議 瀏覽:855
源碼編輯器如何設置難度 瀏覽:357