我有以下用于创建PDF缩略图的代码,但此代码仅适用于具有HttpPostedFile的输入文件。但是我的文件在文件系统中,我不知道如何在没有HttpPostedFile的情况下处理它们。如何在文件系统中创建文件的缩略图?
这是代码:
<%@ Page language="c#" %>
<%@ Register TagPrefix="tc" Assembly="TallComponents.PDFThumbnail" Namespace="TallComponents.Web.PDF" %>
<script runat="server">
protected void DisplayThumbs_Click(object sender, System.EventArgs e)
{
thumbnails.Controls.Clear();
HttpPostedFile postedFile = Request.Files[ "pdf" ];
if ( null != postedFile )
{
byte[] buffer = new byte[ postedFile.ContentLength ];
postedFile.InputStream.Read( buffer, 0, buffer.Length );
string unique = Guid.NewGuid().ToString();
Session[ unique ] = buffer;
int n = Thumbnail.GetPageCount( postedFile.InputStream );
for ( int i=1; i<=n; i++ )
{
Thumbnail thumbnail = new Thumbnail();
thumbnail.SessionKey = unique;
thumbnail.Index = i;
thumbnails.Controls.Add( thumbnail );
}
}
}
</script>
<HTML>
<body>
<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
<input width="100%" type="file" size="50" name="pdf" /> <br/>
<asp:button Runat="server" Text="Display thumbs" ID="DisplayThumbs" OnClick="DisplayThumbs_Click" /> <br/>
<asp:Panel ID="thumbnails" runat="server" />
</form>
</body>
</HTML>
提前致谢
答案 0 :(得分:1)
如果您使用它来处理基于文件系统的流,您只需要asp.net代码中的“核心逻辑代码”。 您可以这样使用它:
private static IList<Thumbnail> GetThumbnails(System.IO.File pdfFile)
{
string unique = Guid.NewGuid().ToString();
using(System.IO.Stream stream = pdfFile.OpenRead())
{
int n = Thumbnail.GetPageCount( stream );
List<Thumbnail> thumbnails = new List<Thumbnail>();
for ( int i=1; i<=n; i++ ) // Note: please confirm the loop should really start from the index 1 (instead of 0?)
{
Thumbnail thumbnail = new Thumbnail();
thumbnail.SessionKey = unique;
thumbnail.Index = i;
thumbnails.Add( thumbnail );
}
return thumbnails;
}
}
答案 1 :(得分:0)
您可以使用HttpPostedFile类的SaveAs
函数来保存和使用该文件,
这里是解释所有内容的链接: http://msdn.microsoft.com/en-us/library/system.web.httppostedfile.saveas(v=vs.110).aspx