updated control access
This commit is contained in:
80
old code/tray/src/qz/printer/action/pdf/BookBundle.java
Executable file
80
old code/tray/src/qz/printer/action/pdf/BookBundle.java
Executable file
@@ -0,0 +1,80 @@
|
||||
package qz.printer.action.pdf;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.print.Book;
|
||||
import java.awt.print.PageFormat;
|
||||
import java.awt.print.Printable;
|
||||
import java.awt.print.PrinterException;
|
||||
|
||||
/**
|
||||
* Wrapper of the {@code Book} class as a {@code Printable} type,
|
||||
* since PrinterJob implementations do not seem to handle the {@code Pageable} interface properly.
|
||||
*/
|
||||
public class BookBundle extends Book {
|
||||
|
||||
private static final Logger log = LogManager.getLogger(BookBundle.class);
|
||||
|
||||
private Printable lastPrint;
|
||||
private int lastStarted;
|
||||
|
||||
public BookBundle() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper of the wrapper class so that PrinterJob implementations will handle it as proper pageable
|
||||
*/
|
||||
public Book wrapAndPresent() {
|
||||
Book cover = new Book();
|
||||
for(int i = 0; i < getNumberOfPages(); i++) {
|
||||
cover.append(new PrintingPress(), getPageFormat(i));
|
||||
}
|
||||
|
||||
return cover;
|
||||
}
|
||||
|
||||
public Book wrapAndPresent(int offset, int length) {
|
||||
Book coverSubset = new Book();
|
||||
for(int i = offset; i < offset + length && i < getNumberOfPages(); i++) {
|
||||
coverSubset.append(new PrintingPress(offset), getPageFormat(i));
|
||||
}
|
||||
|
||||
return coverSubset;
|
||||
}
|
||||
|
||||
|
||||
/** Printable wrapper to ensure proper reading of multiple documents across spooling */
|
||||
private class PrintingPress implements Printable {
|
||||
private int pageOffset;
|
||||
|
||||
public PrintingPress() {
|
||||
this(0);
|
||||
}
|
||||
|
||||
public PrintingPress(int offset) {
|
||||
pageOffset = offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int print(Graphics g, PageFormat format, int pageIndex) throws PrinterException {
|
||||
pageIndex += pageOffset;
|
||||
log.trace("Requested page {} for printing", pageIndex);
|
||||
|
||||
if (pageIndex < getNumberOfPages()) {
|
||||
Printable printable = getPrintable(pageIndex);
|
||||
if (printable != lastPrint) {
|
||||
lastPrint = printable;
|
||||
lastStarted = pageIndex;
|
||||
}
|
||||
|
||||
return printable.print(g, format, pageIndex - lastStarted);
|
||||
}
|
||||
|
||||
return NO_SUCH_PAGE;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user