On Thu, 24 Jun 2021 22:34:36 GMT, Phil Race <p...@openjdk.org> wrote:
>> This enhancement adds the String property outputFileProperty() to the >> JobSettings class. >> The value should be a string that references a local file encoded as a URL. >> If this is non-null and set to a location that the user has permission to >> write to, >> then the printer output will be spooled there instead of the printer, so >> long as the platform printing system supports this. >> The user can of course also set a print-to-file destination in the platform >> printer dialogs which may over-ride what the application set. But now the >> application can also see what it was set to, and cancel or alter it if >> necessary. >> >> A simple manual test is provided, manual mainly because the few real >> printing functional tests are all manual as they are only useful if run with >> a printer configured. > > Phil Race has updated the pull request incrementally with two additional > commits since the last revision: > > - 8223717: javafx printing: Support Specifying Print to File in the API > - 8223717: javafx printing: Support Specifying Print to File in the API I left some preliminary comments on the API spec. modules/javafx.graphics/src/main/java/javafx/print/JobSettings.java line 474: > 472: * encoded name of a filesystem file, to which the platform printer > 473: * driver should spool the rendered print data. > 474: * <p> Can you add a sentence indicating that the URL needs to be a `file:` URL? And indicate what happens if it isn't (I presume it is ignored)? modules/javafx.graphics/src/main/java/javafx/print/JobSettings.java line 475: > 473: * driver should spool the rendered print data. > 474: * <p> > 475: * Applications can use this to request print-to-file behaviour where behaviour -> behavior modules/javafx.graphics/src/main/java/javafx/print/JobSettings.java line 488: > 486: * If the print system does not support print-to-file, then this > 487: * <p> > 488: * setting will be ignored. These two lines should be switched. modules/javafx.graphics/src/main/java/javafx/print/JobSettings.java line 490: > 488: * setting will be ignored. > 489: * If the URL specifies a non-existent path, or does not specify > 490: * a writable file it may be ignored, or a SecurityException may be > thrown. I want to look at what we do for other properties like this. I'm not sure how feasible it is to throw an exception back to the application. And I wouldn't want to single out a security exception (what about a read-only file system?). I think that whatever the reason, if the file can't be written to, we should treat it consistently. Probably by ignoring the request. I presume that's what will happen if the print driver doesn't support print-to-file? modules/javafx.graphics/src/main/java/javafx/print/JobSettings.java line 495: > 493: * > 494: * @return the name of a printer spool file > 495: * @since 13 17 ------------- PR: https://git.openjdk.java.net/jfx/pull/543