Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / повернуть страницу в альбомной проекции при печати через принтер / 5 сообщений из 5, страница 1 из 1
01.04.2020, 16:36
    #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
02.04.2020, 15:58
    #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
02.04.2020, 17:46
    #39943238
Igorgg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повернуть страницу в альбомной проекции при печати через принтер
спасибо большое
...
Рейтинг: 0 / 0
02.04.2020, 19:04
    #39943270
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повернуть страницу в альбомной проекции при печати через принтер
irbis_al, мимоходом замечу что обработка исключений у тебя - жестокая и безсмысленная.
Лучше бы вообще не обрабатывал чем обработал так.
...
Рейтинг: 0 / 0
02.04.2020, 19:46
    #39943284
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повернуть страницу в альбомной проекции при печати через принтер
mayton
irbis_al, мимоходом замечу что обработка исключений у тебя - жестокая и безсмысленная.
Лучше бы вообще не обрабатывал чем обработал так.


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


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