mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 17:22:09 +10:00
Printed projects are sometimes missing parts of components or text
This commit is contained in:
@@ -24,11 +24,12 @@ import java.awt.datatransfer.ClipboardOwner;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.geom.Area;
|
||||
import java.awt.print.PrinterException;
|
||||
import java.awt.print.PrinterJob;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
@@ -46,6 +47,8 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.KeyStroke;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.printing.PDFPageable;
|
||||
import org.diylc.appframework.miscutils.ConfigurationManager;
|
||||
import org.diylc.appframework.miscutils.IConfigListener;
|
||||
import org.diylc.appframework.miscutils.InMemoryConfigurationManager;
|
||||
@@ -150,8 +153,8 @@ public class ActionFactory {
|
||||
return new ExportPNGAction(plugInPort, drawingProvider, swingUI, defaultSuffix);
|
||||
}
|
||||
|
||||
public PrintAction createPrintAction(IDrawingProvider drawingProvider, int keyModifiers) {
|
||||
return new PrintAction(drawingProvider, keyModifiers);
|
||||
public PrintAction createPrintAction(IDrawingProvider drawingProvider, ISwingUI swingUI, int keyModifiers) {
|
||||
return new PrintAction(drawingProvider, swingUI, keyModifiers);
|
||||
}
|
||||
|
||||
public ExportVariantsAction createExportVariantsAction(ISwingUI swingUI, IPlugInPort plugInPort) {
|
||||
@@ -850,10 +853,12 @@ public class ActionFactory {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private IDrawingProvider drawingProvider;
|
||||
private ISwingUI swingUI;
|
||||
|
||||
public PrintAction(IDrawingProvider drawingProvider, int keyModifiers) {
|
||||
public PrintAction(IDrawingProvider drawingProvider, ISwingUI swingUI, int keyModifiers) {
|
||||
super();
|
||||
this.drawingProvider = drawingProvider;
|
||||
this.swingUI = swingUI;
|
||||
putValue(AbstractAction.NAME, "Print...");
|
||||
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, keyModifiers));
|
||||
putValue(AbstractAction.SMALL_ICON, IconLoader.Print.getIcon());
|
||||
@@ -862,11 +867,33 @@ public class ActionFactory {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
LOG.info("PrintAction triggered");
|
||||
try {
|
||||
DrawingExporter.getInstance().print(this.drawingProvider);
|
||||
} catch (PrinterException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
swingUI.executeBackgroundTask(new ITask<Void>() {
|
||||
|
||||
@Override
|
||||
public Void doInBackground() throws Exception {
|
||||
File tempPdf = Files.createTempFile("diylc", ".pdf").toFile();
|
||||
DrawingExporter.getInstance().exportPDF(PrintAction.this.drawingProvider, tempPdf);
|
||||
|
||||
PDDocument document = PDDocument.load(tempPdf);
|
||||
// PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
|
||||
PrinterJob job = PrinterJob.getPrinterJob();
|
||||
PDFPageable pdfPageable = new PDFPageable(document);
|
||||
job.setPageable(pdfPageable);
|
||||
// job.setPrintService(printService);
|
||||
job.print();
|
||||
DrawingExporter.getInstance().print(PrintAction.this.drawingProvider);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(Void result) {}
|
||||
|
||||
@Override
|
||||
public void failed(Exception e) {
|
||||
swingUI.showMessage("Could not print. " + e.getMessage(), "Error",
|
||||
ISwingUI.ERROR_MESSAGE);
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
|
||||
actionFactory.createExportPDFAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE);
|
||||
swingUI.injectMenuAction(
|
||||
actionFactory.createExportPNGAction(plugInPort, drawingProvider, swingUI, ""), FILE_TITLE);
|
||||
swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider,
|
||||
swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider, swingUI,
|
||||
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), FILE_TITLE);
|
||||
swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE);
|
||||
swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort,
|
||||
@@ -88,7 +88,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
|
||||
swingUI.injectMenuAction(actionFactory.createExportPNGAction(plugInPort,
|
||||
traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE);
|
||||
swingUI.injectMenuAction(
|
||||
actionFactory.createPrintAction(traceMaskDrawingProvider,
|
||||
actionFactory.createPrintAction(traceMaskDrawingProvider, swingUI,
|
||||
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | KeyEvent.SHIFT_DOWN_MASK),
|
||||
TRACE_MASK_TITLE);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user