-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathPdfViewer.ascx.cs
127 lines (115 loc) · 3.79 KB
/
PdfViewer.ascx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.Pdf;
using System.IO;
using DevExpress.Web;
using System.Drawing;
using System.Drawing.Imaging;
namespace E5095 {
public partial class PdfViewer : System.Web.UI.UserControl {
byte[] _pdfData;
string _pdfFilePath;
PdfDocumentProcessor _documentProcessor;
public PdfViewer() {
_pdfData = null;
_pdfFilePath = "";
_documentProcessor = new PdfDocumentProcessor();
}
protected PdfDocumentProcessor DocumentProcessor {
get {
return _documentProcessor;
}
}
public Unit Width {
get {
return dvDocument.Width;
}
set {
dvDocument.Width = value;
}
}
public Unit Height {
get {
return dvDocument.Height;
}
set {
dvDocument.Height = value;
}
}
public string PdfFilePath {
get {
return _pdfFilePath;
}
set {
try {
_pdfFilePath = value;
if (!String.IsNullOrEmpty(value)) {
DocumentProcessor.LoadDocument(Server.MapPath(value), true);
BindDataView();
}
}
catch (Exception ex) {
ShowError(String.Format("File Loading Failed: {0}", ex.Message));
}
}
}
public byte[] PdfData {
get {
return _pdfData;
}
set {
try {
_pdfData = value;
if (value != null) {
using (MemoryStream stream = new MemoryStream(value)) {
DocumentProcessor.LoadDocument(stream, true);
BindDataView();
}
}
}
catch (Exception ex) {
ShowError(String.Format("File Loading Failed: {0}", ex.Message));
}
}
}
protected void BindDataView() {
if (DocumentProcessor.Document != null) {
List<PdfPageItem> data = new List<PdfPageItem>();
for (int pageNumber = 1; pageNumber <= DocumentProcessor.Document.Pages.Count; pageNumber++) {
data.Add(new PdfPageItem() {
PageNumber = pageNumber
});
}
dvDocument.DataSource = data;
dvDocument.DataBind();
}
lbErrorMessage.Text = String.Empty;
}
protected void bimPdfPage_DataBinding(object sender, EventArgs e) {
ASPxBinaryImage image = sender as ASPxBinaryImage;
DataViewItemTemplateContainer container = image.NamingContainer as DataViewItemTemplateContainer;
int pageNumber = (int)container.EvalDataItem("PageNumber");
using (Bitmap bitmap = DocumentProcessor.CreateBitmap(pageNumber, 900)) {
using (MemoryStream stream = new MemoryStream()) {
bitmap.Save(stream, ImageFormat.Png);
image.ContentBytes = stream.ToArray();
}
}
}
protected class PdfPageItem {
public int PageNumber {
get;
set;
}
}
protected void ShowError(string message) {
dvDocument.DataSource = null;
dvDocument.DataBind();
lbErrorMessage.Text = message;
}
}
}