Am trying to change old PdfViewer with Telerik control
This built as the following :
1. main Page (Attachment.aspx) load -> usercontrol (TransactionArchiving.ascx) //TransactionArchiving to deal with business
2. usercontrol (TransactionArchiving.ascx) load -> usercontrol (InboundArchive.ascx) //InboundArchive to deal with business
3. usercontrol (InboundArchive.ascx) load -> usercontrol (Archiving.ascx) //Archiving usercontrol should support different type of attachments and should dynamically load the attachment (PdfViewer ,TextArea, Templates, Word and .....) each type built into different usercontrol
On bellow HTML for Archiving usercontrol
<
asp:Repeater
ID
=
"archivedTabs"
runat
=
"server"
OnItemDataBound
=
"archivedTabs_ItemDataBound"
>
<
ItemTemplate
>
<
div
id='<%#this.ClientID + "_viewT" + Container.ItemIndex.ToString() %>' class="tabContainer noBorder">
<
div
class
=
"col-sm-12 lntext-Hdr"
>
</
div
>
<
asp:HiddenField
ID
=
"hdnUniqueId"
runat
=
"server"
/>
<
asp:HiddenField
ID
=
"hdnIndex"
runat
=
"server"
Value='<%#Container.ItemIndex.ToString()%>' />
<
asp:PlaceHolder
ID
=
"dynamicControlsPlaceHolder"
runat
=
"server"
></
asp:PlaceHolder
>
<
div
class
=
"rowF noRowColor noBorder"
style
=
"text-align: center"
>
<
div
class
=
"col8"
>
<
asp:Button
ID
=
"saveBtn"
OnClick
=
"saveBtn_Click"
OnClientClick
=
"return true;"
CssClass
=
"btn btnGreen loadingData"
runat
=
"server"
meta:resourcekey
=
"saveBtn"
/>
<
asp:Button
ID
=
"deleteBtn"
CausesValidation
=
"false"
OnClick
=
"deleteBtn_Click"
OnClientClick
=
"return true;"
CssClass
=
"btn btnGreen"
runat
=
"server"
meta:resourcekey
=
"deleteBtn"
/>
<
asp:Button
ID
=
"sendBtn"
CausesValidation
=
"false"
Visible
=
"false"
CssClass
=
"btn btnGreen"
runat
=
"server"
meta:resourcekey
=
"sendBtn"
/>
<
asp:Button
runat
=
"server"
ID
=
"eibtnBackToDirectorateTray"
OnClick
=
"eibtnBackToDirectorateTray_Click"
Style
=
"display: inline;"
meta:resourcekey
=
"eibtnBackToDirectorateTrayResource1"
class
=
"btn btnGreen"
CausesValidation
=
"false"
/>
<
asp:Button
runat
=
"server"
ID
=
"eibtnBackToOutboundDraftTray"
OnClick
=
"eibtnBackToOutboundDraftTray_Click"
Style
=
"display: inline;"
meta:resourcekey
=
"eibtnBackToOutboundDraftTrayResource1"
class
=
"btn btnGreen"
CausesValidation
=
"false"
/>
</
div
>
</
div
>
</
div
>
</
ItemTemplate
>
</
asp:Repeater
>
I think the issue cuz of repeater and PlaceHolder (dynamicControlsPlaceHolder)
This is the C# code for the same userControl
PlaceHolder dynamicControls = item.FindControl(
"dynamicControlsPlaceHolder"
)
as
PlaceHolder;
PDFViewer ucPDFViewer = LoadControl(
"~/VIP/UserControls/ArchivingPDF/PDFViewer.ascx"
)
as
PDFViewer;
ucPDFViewer.ID =
"archivingControl_"
+ hdnUniqueId;
ucPDFViewer.IsFromDirectorate =
this
.IsFromDirectorate;
ucPDFViewer.CallDelete +=
new
EventHandler(DeleteFromViewer);
if
(
this
.IsForManifest)
{
ucPDFViewer.loadManifest(record);
}
else
{
ucPDFViewer.loadData(record);
}
dynamicControls.Controls.Add(ucPDFViewer);
On bellow PDFViewer.ascx code
<
script
type
=
"text/javascript"
src
=
"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.js"
></
script
>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<
link
href='<%# Page.ResolveUrl("~/UserControls/ArchivingPDF/css/styles.css") %>' rel="stylesheet" />
<%--<
form
id
=
"form1"
runat
=
"server"
>--%>
<%-- <
telerik:RadScriptManager
runat
=
"server"
ID
=
"RadScriptManager1"
/>--%>
<
telerik:RadSkinManager
ID
=
"RadSkinManager1"
runat
=
"server"
ShowChooser
=
"true"
/>
<
script
type
=
"text/javascript"
>
window.pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.2.2/pdf.worker.js';
function pageLoad(app, args) {
var upload = $find('<%= RadAsyncUpload1.ClientID %>');
$(upload.get_element()).find("input[type='file']").attr("accept", ".docx, .rtf, .html, .txt, .xlsx, .csv");
}
function fileUploaded(sender, args) {
$find('<%= RadAjaxManager1.ClientID %>').ajaxRequest();
}
</
script
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
EnablePageHeadUpdate
=
"false"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadAjaxManager1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadAsyncUpload1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadPdfViewer1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadLabel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
>
</
telerik:RadAjaxLoadingPanel
>
<
div
class
=
"demo-container size-wide"
runat
=
"server"
>
<
telerik:RadAsyncUpload
ID
=
"RadAsyncUpload1"
runat
=
"server"
OnClientFileUploaded
=
"fileUploaded"
OnFileUploaded
=
"RadAsyncUpload1_FileUploaded"
AllowedFileExtensions
=
".docx,.rtf,.html,.txt,.xlsx,.csv"
HideFileInput
=
"true"
AutoAddFileInputs
=
"false"
Localization-Select
=
"Upload And Convert"
EnableInlineProgress
=
"false"
MultipleFileSelection
=
"Disabled"
/>
<
telerik:RadLabel
ID
=
"RadLabel1"
runat
=
"server"
Text="Displayed Document: <b>Document.pdf</
b
>"
Style="float: left;">
</
telerik:RadLabel
>
<
telerik:RadLabel
ID
=
"RadLabel2"
runat
=
"server"
Text="Supported formats: <b>.docx / .rtf / .html / .txt / .xlsx / .csv</
b
>"
Style="float: right;">
</
telerik:RadLabel
>
<
br
/>
<
br
/>
<
br
/>
<
telerik:RadPdfViewer
runat
=
"server"
ID
=
"RadPdfViewer1"
Height
=
"600px"
Width
=
"100%"
Scale
=
"0.9"
>
<%--<
PdfjsProcessingSettings
File='<%# Page.ResolveUrl("~/EmptyText.txt") %>'></
PdfjsProcessingSettings
>--%>
</
telerik:RadPdfViewer
>
</
div
>
<%--</
form
>--%>
PdfViewer C# code
protected
void
Page_Load(
object
sender, EventArgs e)
{
int
maxSize = 10 * 1024 * 1024;
// 10MB
RadAsyncUpload1.MaxFileSize = maxSize;
RadPdfViewer1.MaxSerializerLength = maxSize;
RadPdfViewer1.PdfjsProcessingSettings.File = Page.ResolveUrl(
"~/EmptyDoc.pdf"
);
}
protected
void
RadAsyncUpload1_FileUploaded(
object
sender, FileUploadedEventArgs e)
{
byte
[] renderedBytes =
null
;
string
extention = Path.GetExtension(e.File.FileName);
// RadFlow Documents
if
(Regex.IsMatch(extention,
".docx|.rtf|.html|.txt"
))
{
IFormatProvider<RadFlowDocument> provider =
null
;
RadFlowDocument document =
null
;
switch
(extention)
{
case
".docx"
: provider =
new
DocxFormatProvider();
break
;
case
".rtf"
: provider =
new
RtfFormatProvider();
break
;
case
".html"
: provider =
new
HtmlFormatProvider();
break
;
case
".txt"
: provider =
new
TxtFormatProvider();
break
;
default
: provider =
null
;
break
;
}
document = provider.Import(e.File.InputStream);
Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider pdfProvider =
new
Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider();
using
(MemoryStream ms =
new
MemoryStream())
{
pdfProvider.Export(document, ms);
renderedBytes = ms.ToArray();
}
}
// Workbook Documents
else
if
(Regex.IsMatch(extention,
".xlsx|.csv"
))
{
IWorkbookFormatProvider provider =
null
;
Workbook document =
null
;
switch
(extention)
{
case
".xlsx"
: provider =
new
XlsxFormatProvider();
break
;
case
".csv"
: provider =
new
CsvFormatProvider();
break
;
default
: provider =
null
;
break
;
}
document = provider.Import(e.File.InputStream);
Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfProvider =
new
Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();
using
(MemoryStream ms =
new
MemoryStream())
{
pdfProvider.Export(document, ms);
renderedBytes = ms.ToArray();
}
}
RadLabel1.Text =
"Displayed Document: <b>"
+ e.File.FileName +
"</b>"
;
RadPdfViewer1.PdfjsProcessingSettings.FileSettings.Data = Convert.ToBase64String(renderedBytes);
}
So the first image its the consol error (Capture01)
I have tried to update the code as the following (Capture02) // i think updated it wrong way
After code update (Capture03)
This is the first time for me to implement telerik controls and i could not find fully document for all features needed (Custom buttons, Add png to the attached like signature).