|
Hi All,
I am looking for expert advice on printing the pdf files at client machine.
I have created a sample project named ClientPrint as
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Runtime.InteropServices
Namespace ActiveX
Public Interface IActiveXPrintLib
Sub PrintFile(filePath As String)
End Interface
<ProgId("ActiveX.PrintFile")>
<ClassInterface(ClassInterfaceType.AutoDual)>
<ComVisible(True)>
Public Class ActiveXPrintLib
Implements IActiveXPrintLib
<ComVisible(True)>
Public Sub PrintFile(filePath As String) Implements IActiveXPrintLib.PrintFile
Dim AcroPdf As New AcroPDFLib.AcroPDF()
AcroPdf.LoadFile(filePath)
AcroPdf.printAll()
End Sub
End Class
End Namespace
I have created the dll and register the dll using regasm command on client machine.
Now at time of consuming the print method at client side using javascript as
<object id="myControl1" name="myControl1" classid="clsid:ActiveX.ActiveXPrintLib"> </object>
var axComponent = new ActiveXObject("ActiveX.ActiveXPrintLib");
alert(axComponent);
if (axComponent == null) {
alert('Probably not installed');
}
else {
yourAxComponent.PrintFile('<%= Page.ResolveUrl("~/PdfTemp/0d818b57-9384-4f52-ae89-8ef5868064b7.pdf") %>');
alert('yes');
}
I am getting the error that automation server can't create object, using IE I have enabled the active x and permisssions to download the activex. but it still gives me same error.
I am not sure whether my code is correct or not.
Any advice is really helpful.
Thanks in advance.
Sachin Mehndiratta
mehndi.sachin@gmail.com
|
|
|
|
|
|
Hi,
Thanks for sharing the link, but information shared on this link is not complete and still I am facing same issue.
Thanks,
|
|
|
|
|
Why we need Attribute in .net application ? Please give any real time example.
Thanks in Advance
|
|
|
|
|
Attributes allow us to decorate something, e.g. a class, with something that indicates to a piece of calling code that this particular thing has certain behaviour. While the operation can appear magical at times, e.g. how does marking a class as Serializable mean it can be serialized, there is always a piece of code at the other side that is checking to see if the attribute exists and acting on it if it's present. Serialization is a great example of the practical use of attributes. As well as marking a class as being capable of serialization, we can use additional attributes to say that certain types in that class should not be serialized. Then, when you attempt to serialize the class in your code, the underlying serialization engine determines that the class can be serialized but it has to ignore certain members in it.
|
|
|
|
|
|
What else you suggest ? Whats problem with Attribute ?
|
|
|
|
|
Hi
i have created DataGrid and i need to align the specific column (4th column i.e index 3) to Center in C# programmatically.
I tried as below
dg1.Columns[3].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
but giving error as follows
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
even if i give index 0 also same error
How to achieve this. If anybody knows reply me.
Thanks in advance.
|
|
|
|
|
ven753 wrote: even if i give index 0 also same error
That means that your columns have not yet been created at that point.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
No i have dataset and i am adding datasource to datagrid and binding as follows.
dg1.DataSource = ds1.Tables["tblanni"].DefaultView;
dg1.DataBind();
in ds1 4 columns is there and after binding to datagrid same column i will get in datagrid.
Then how to achieve this. Please reply me.
|
|
|
|
|
Change the alignment AFTER binding - the datageridview does not have the columns at the point where you are accessing them. If it did, the index would not be out of range.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I added after binding then also its giving same error.
dg1.DataSource = ds1.Tables["tblanni"].DefaultView;
dg1.DataBind();
dg1.Columns[3].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
What to do. Please reply me.
|
|
|
|
|
Is this a WinForms datagrid (prolly not), an ASP.NET grid or a WPF-grid? In WinForms, life is simple;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
class Test
{
public string Item1 { get; set; }
public string Item2 { get; set; }
public string Item3 { get; set; }
}
DataGridView grid;
public Form1()
{
List<Test> data = new List<Test>();
data.Add(new Test() { Item1 = "bla", Item2 = "foos", Item3 = "bar" });
InitializeComponent();
grid = new DataGridView() { Dock = DockStyle.Fill };
grid.DataSource = data;
Controls.Add(grid);
MessageBox.Show(string.Format("There are {0} columns in this grid", grid.Columns.Count));
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
grid.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
}
}
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
No i am creating in windows service application. There i am using datagrid
through service cs file i am creating dataset
DataGrid dg1 = new DataGrid();
dg1.ItemStyle.HorizontalAlign = HorizontalAlign.Center; this will work for all the column items and align will become center.
but i need to do for particular column
not working
dg1.Columns[3].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
How to achieve this and it is nor datagridview only DataGrid.
Please reply me.
|
|
|
|
|
You're creating a UI element inside a Windows Service? Why? A service has no UI, so what are you trying to accomplish here?
|
|
|
|
|
We can use dataset and result is coming and displaying 4 columns.
Only i need to do particular column alignment.
But its not working.
|
|
|
|
|
You haven't answered my question. Why are you trying to do this inside a service? A service should have no user interface.
|
|
|
|
|
Ya but i have created one html file and for that i am sending this dataset after rendering as
StringWriter stringWriter1 = new StringWriter();
HtmlTextWriter htmlWrite1 = new HtmlTextWriter(stringWriter1);
i am trying read html file and after reading just rendering the control as shown below
dg1.RenderControl(htmlWrite1);
i am getting html file result and that 4 column grid.
Only i need to make particular column alignment.
How to do this.
|
|
|
|
|
If you're just trying to write out to a file as HTML, then why are you trying to write it out this way? A simpler method would be to save your DataSet out as XML and use a page that XPath to read and display the content.
|
|
|
|
|
Ummm, you've got a HUGE problem. Windows Services cannot display a UI. Starting with Windows Vista, services that attempt to display a UI only show their interface on a separate desktop from the user that's logged in. The user gets a notification that a service has put up a UI window and asked if they want to switch desktops to see it.
UI restrictions on services have now gotten to the point where a service cannot show a UI at all. This "transition" period comes from the days on Windows XP where a service could show a UI. This is a security risk so Microsoft has removed the ability to do this from Windows.
|
|
|
|
|
Ya but i have created one html file and for that i am sending this dataset after rendering as
StringWriter stringWriter1 = new StringWriter();
HtmlTextWriter htmlWrite1 = new HtmlTextWriter(stringWriter1);
i am trying read html file and after reading just rendering the control as shown below
dg1.RenderControl(htmlWrite1);
i am getting html file result and that 4 column grid.
Only i need to make particular column alignment.
How to do this.
|
|
|
|
|
What does this have to do with writing a Windows Service application?
|
|
|
|
|
Next to the "no UI" issue, there's also the point the a DataGrid[^] doesn't have a columns-property.
Yes, it is faster in displaying data than a DataGridView, but it doesn't have as much features built in.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
But through coding if i type DataGrid.Columns[]
Columns property it will show. But after adding below code it is not working
dg1.Columns[3].ItemStyle.HorizontalAlign = HorizontalAlign.Center;
What to do. Please reply me.
|
|
|
|
|
ven753 wrote: Columns property it will show.
Only if you're referencing a DataGridView, and that's a different control.
Either you switch to the DataGridView, or you adjust the requirement of needing the alignment.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|