none
Imprimir texto en vertical RRS feed

  • 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.

    jueves, 19 de mayo de 2011 16:29

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.

    viernes, 20 de mayo de 2011 8:36

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
    jueves, 19 de mayo de 2011 19:39
  • 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.

    viernes, 20 de mayo de 2011 8:36