Principales respuestas
Imprimir texto en vertical

Pregunta
-
Hola
Tengo el siguiente codigo, me interesa que el texto se imprima en vertical, pero no lo consigo, alguna idea
He probado, cambiando la orientación de la pagina, sin resultado, indicando la bandeja manual y nada.
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
LocalPrintServer localPrinter = new LocalPrintServer();
PrintQueue defaultPrinter = LocalPrintServer.GetDefaultPrintQueue();
FixedDocument document = new FixedDocument();
document.DocumentPaginator.PageSize = new Size(this.EnvelopeSizeWidth / 0.33, this.EnvelopeSizeHeight /0.33);
FixedPage page = new FixedPage();
page.Width = document.DocumentPaginator.PageSize.Width;
page.Height = document.DocumentPaginator.PageSize.Height;
page.Margin = new Thickness(400, 350,0,0);
TextBlock text = new TextBlock();
text.Text = AddressTextBox.Text;
page.Children.Add(text);
PageContent content = new PageContent();
content.Child = page;
document.Pages.Add(content);
var writer = PrintQueue.CreateXpsDocumentWriter(defaultPrinter);
writer.Write(document);
}
Gracias de antemano.
Respuestas
-
Hola David
Lo primero gracias por respuesta, y no, no lo había probado, pero al final encontre la solución.
Para el que le interese pongo el codigo con la solución.
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
LocalPrintServer localPrinter = new LocalPrintServer();
PrintQueue defaultPrinter = LocalPrintServer.GetDefaultPrintQueue();
PrintTicket ticket = new PrintTicket();
ticket.PageOrientation = PageOrientation.Landscape;
defaultPrinter.DefaultPrintTicket = ticket;
FixedDocument document = new FixedDocument();
document.DocumentPaginator.PageSize = new Size(this.EnvelopeSizeWidth / 0.33, this.EnvelopeSizeHeight /0.33);
FixedPage page = new FixedPage();
page.Width = document.DocumentPaginator.PageSize.Width;
page.Height = document.DocumentPaginator.PageSize.Height;
page.Margin = new Thickness(400, 350,0,0);
TextBlock text = new TextBlock();
text.Text = AddressTextBox.Text;
page.Children.Add(text);
PageContent content = new PageContent();
content.Child = page;
document.Pages.Add(content);
var writer = PrintQueue.CreateXpsDocumentWriter(defaultPrinter);
writer.Write(document,ticket);
}
Si alguien tiene alguna sugerencia, sera bienvenida, ya que el tema de impresión lo tengo muy bajo.
- Propuesto como respuesta Dacar7 viernes, 20 de mayo de 2011 14:00
- Marcado como respuesta Eduardo PorteschellerModerator martes, 26 de julio de 2011 17:16
Todas las respuestas
-
Hola Vicente,
Ya probaste rotando el textBlock? es decir, haciendo lo siguiente:
<TextBlock x:Name="YAxisTitle" HorizontalAlignment="Center" VerticalAlignment="Center" Text="Y-Axis Label" RenderTransformOrigin="0.5,0.5"> <TextBlock.RenderTransform> <RotateTransform Angle="-90"/> </TextBlock.RenderTransform> </TextBlock>
o esto:
<TextBlock Margin="-158,0,-153,0" VerticalAlignment="Center" Text="This text should fit here" TextWrapping="Wrap" Foreground="#FFE1B3B3" RenderTransformOrigin="0.5,0.5" Grid.ColumnSpan="1" HorizontalAlignment="Center" Width="189" Height="20" d:LayoutOverrides="Height" Grid.Column="0"> <TextBlock.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="-90"/> <TranslateTransform/> </TransformGroup> </TextBlock.RenderTransform> </TextBlock>
David Cardona
Silverlight and .Net Developer
Medellin, Colombia -
Hola David
Lo primero gracias por respuesta, y no, no lo había probado, pero al final encontre la solución.
Para el que le interese pongo el codigo con la solución.
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
LocalPrintServer localPrinter = new LocalPrintServer();
PrintQueue defaultPrinter = LocalPrintServer.GetDefaultPrintQueue();
PrintTicket ticket = new PrintTicket();
ticket.PageOrientation = PageOrientation.Landscape;
defaultPrinter.DefaultPrintTicket = ticket;
FixedDocument document = new FixedDocument();
document.DocumentPaginator.PageSize = new Size(this.EnvelopeSizeWidth / 0.33, this.EnvelopeSizeHeight /0.33);
FixedPage page = new FixedPage();
page.Width = document.DocumentPaginator.PageSize.Width;
page.Height = document.DocumentPaginator.PageSize.Height;
page.Margin = new Thickness(400, 350,0,0);
TextBlock text = new TextBlock();
text.Text = AddressTextBox.Text;
page.Children.Add(text);
PageContent content = new PageContent();
content.Child = page;
document.Pages.Add(content);
var writer = PrintQueue.CreateXpsDocumentWriter(defaultPrinter);
writer.Write(document,ticket);
}
Si alguien tiene alguna sugerencia, sera bienvenida, ya que el tema de impresión lo tengo muy bajo.
- Propuesto como respuesta Dacar7 viernes, 20 de mayo de 2011 14:00
- Marcado como respuesta Eduardo PorteschellerModerator martes, 26 de julio de 2011 17:16