我已经实现了对一些 GMF 图文件的直接打印。打开图表,打印到文件,然后关闭图表。我面临的问题是以下几点:
private static void printDiagrams(IEditorPart editorPart,org.eclipse.gmf.runtime.diagram.ui.printing.internal.util.SWTDiagramPrinter
diagramPrinter,String diagName) {
PrinterData printData = new PrinterData("winspool","PDFCreator");
if(printData!=null)
{
printData.printToFile = true;
printData.fileName = "D:\\"+diagName+".pdf";
printData.scope= 0;
final Printer printer = new Printer(printData);
diagramPrinter.setPrinter(printer);
diagramPrinter.setDisplayDPI(Display.getDefault().getDPI());
diagramPrinter.setFitToPage(true);
DiagramEditPart dgrmEP = ((DiagramEditor) editorPart).getDiagramEditPart();
assert dgrmEP != null;
diagramPrinter.setDiagrams(Collections.singletonList(((DiagramEditor) editorPart).getDiagram()));
diagramPrinter.run();
printer.dispose();
}
问题是使用上面的代码我在打开 pdf 文件时收到错误。“ Acrobat Reader 无法打开 ....pdf,因为它不是支持的文件类型或文件已损坏”
还尝试进入睡眠状态,以确保在处理打印机之前完成打印。最后出现同样的错误。
任何提示都是有帮助的。