Я реализовал прямую печать в файлы некоторых диаграмм 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, потому что это либо неподдерживаемый тип файла, либо файл поврежден"
Пробовал также поставить сон, чтобы убедиться, что печать завершена, прежде чем утилизировать принтер. В итоге такая же ошибка.
Любая подсказка полезна.