powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / повернуть страницу в альбомной проекции при печати через принтер
5 сообщений из 5, страница 1 из 1
повернуть страницу в альбомной проекции при печати через принтер
    #39942915
Igorgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, никак не могу повернуть страницу в альбомную ориентацию, всегда книжная при печати через pdf-принтер. Что нужно добавить в тестовом примере, чтобы страница стала альбомной? Т.е., когда файл сохранился, открываем его, чтобы развертка была альбомная сразу. Спасибо.

Код: javascript
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.
package basicprint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.swing.JComponent;

public class Main extends JComponent implements Printable {
  public int print(Graphics g, PageFormat pf, int pageIndex) {
    if (pageIndex > 0) {
      return Printable.NO_SUCH_PAGE;
    }
    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(pf.getImageableX(), pf.getImageableY());
    drawGraphics(g2d, pf);
    return Printable.PAGE_EXISTS;
  }

  public void drawGraphics(Graphics2D g2d,PageFormat pf){
g2d.drawRect(30, 30, (int)pf.getWidth()-30, (int)pf.getHeight()-30);
  }

  public static void main(String[] args) {

    PrinterJob pjob = PrinterJob.getPrinterJob();
    PageFormat pf = pjob.defaultPage();
    Paper p = new Paper();
   // pf.setOrientation(PageFormat.LANDSCAPE);
    p.setSize(250, 150);
    p.setImageableArea(0, 0, 250, 150);
    pf.setPaper(p);
    pjob.setPrintable(new Main(), pf);
    try {
      pjob.print();
    } catch (PrinterException e) {
    }
  }
} 
...
Рейтинг: 0 / 0
повернуть страницу в альбомной проекции при печати через принтер
    #39943179
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igorgg,
Впервые вижу ,чтоб в java через graphics печатали...тем более pdf...
Код: java
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.
             DocPrintJob printerJob = defaultPrintService.createPrintJob();  
            SimpleDoc simpleDoc = null;  
//Тут можете назначать аттрибуты...мне это не надо было типа
       //    HashPrintRequestAttributeSet attr=new HashPrintRequestAttributeSet();
        //    HashDocAttributeSet atrdoc=new HashDocAttributeSet();
        //   attr.add(new MediaPrintableArea(0,0,80,320,MediaPrintableArea.MM));
      //     sysprintallattribute(defaultPrintService, attr);
       //    atrdoc.addAll(attr);

//В линуксе и маке(везде кроме) надо сказать напрямки формат  new SimpleDoc(pdfFile, DocFlavor.INPUT_STREAM.PDF,null /*atrdoc*/);  

       if (!Platform.isWindows()) {
                        try {  
                         InputStream pdfFile=new FileInputStream("xmldesktop/tmprep/tmp.pdf");
                              
                            simpleDoc = new SimpleDoc(pdfFile, DocFlavor.INPUT_STREAM.PDF,null /*atrdoc*/);  
                                                        
                    
                        }  
                        catch ( Exception fe) { fe.printStackTrace();  }
                        
       }

//Если  винда печатаем через   Desktop.getDesktop().print(pdfFilewin);

                    try {  
                        
                        if (Platform.isWindows()) {
                try {
                    File pdfFilewin = new File("xmldesktop/tmprep/tmp.pdf");
                    Desktop.getDesktop().print(pdfFilewin);
                } catch (IOException ioe) {
                    // TODO: Add catch code
                    ioe.printStackTrace();
                }  
                }//END of Windows
                     else  
//В linux и маке посылаем на печать
                 printerJob.print(simpleDoc,null);  
                    } catch (PrintException ex) {  
                        ex.printStackTrace();  
                    }  
                      
        }


Под спойлером я изучал назначение атрибутов ...но так не пригодилось.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private void sysprintallattribute( PrintService printService,PrintRequestAttributeSet attributes){
            MediaPrintableArea[] area = (MediaPrintableArea[])printService.getSupportedAttributeValues(MediaPrintableArea.class,null,attributes);
System.out.println(area.length);
            for (int i=0;i<area.length;i++) {
 float[] values = area[i].getPrintableArea(MediaPrintableArea.INCH); 
               System.out.print(i);  System.out.print("="); 
                for (int f=0;f<values.length;f++) {
                     System.out.print(values[f]); System.out.print(";");
                                           }
                                                   System.out.println();
                                               }
            attributes.add(area[1]);
        }




Так вот в этом режиме ...если pdf файл альбомный или книжный он сам печатает как надо.В аттачменте пример файла.
Там два файла в альбомной..и один в книжной.и оно в этом примере само напечатается как надо и развернётся.
...
Рейтинг: 0 / 0
повернуть страницу в альбомной проекции при печати через принтер
    #39943238
Igorgg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо большое
...
Рейтинг: 0 / 0
повернуть страницу в альбомной проекции при печати через принтер
    #39943270
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al, мимоходом замечу что обработка исключений у тебя - жестокая и безсмысленная.
Лучше бы вообще не обрабатывал чем обработал так.
...
Рейтинг: 0 / 0
повернуть страницу в альбомной проекции при печати через принтер
    #39943284
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
irbis_al, мимоходом замечу что обработка исключений у тебя - жестокая и безсмысленная.
Лучше бы вообще не обрабатывал чем обработал так.


Наверное вы и правы...я начинал свою ИС
http://cis-pos.com/
...очень давно,переходил(2003 г) с Delphi(тут даже можно найти мой первый топик на java,когда я консультировался насчет технической философии)
ИС прошла много лет (и она опенсоурсная и ей пользуются даже в Литве и Латвии, Польше и т.д)
Я стал опытнее,хотя...как ИТ архитектор(а ИТ архитектор это профессиональный дилетант,-знает много всего ,-большой стек технологий ,но всё не так глубоко как узконаправленный специалист
) я конечно слабее любого профессионального java разработчика.
Поэтому мне часто последователи ИС присылают мне код...говорят,что так тут надо и я исправляю. :-)
До этого куска ещё видимо у фолловеров руки не дошли. :-)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / повернуть страницу в альбомной проекции при печати через принтер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]