Column: Maximum Print Size

About:
This script adds a new column which can be used to show the maximum printable size of an image based on the pixel count and the dpi used for printing. The DPI used for the calculation is configurable along with a number of other column features.

Installation:

  • Download: Max Print Size.js.txt (3.3 KB)
  • Drag the .js.txt file to Preferences / Toolbars / Scripts.
  • Add the "Script > Maximum Print Size" column to your file display.

Configuration:

  1. Centimetres: Show the results in centimetres (true) or in inches (false).
  2. DPI: The DPI used for calculating the maximum print size.
  3. Show DPI: Choose whether the DPI setting is displayed in the column.
  4. Show Units: Choose whether the units (cm/inches) are displayed in the column.
  5. Directories: The string used in the column for directories (can be blank).
  6. Files: The string used in the column for files which aren't images (can be blank).

History:

  • 1.0
    • Initial Release.
  • 1.1
    • Code to build the column entry string cleaned up.

Script Code:

// Maximum Print Size Column
// (c) 2020 Steve Banham

// This is a script for Directory Opus.
// See https://www.gpsoft.com.au/DScripts/redirect.asp?page=scripts for development information.

// Called by Directory Opus to initialize the script
function OnInit(initData)
{
	initData.name = "Column: Max. Print Size";
	initData.version = "1.1";
	initData.copyright = "(c) 2020 Steve Banham";
	initData.url = "https://resource.dopus.com/t/column-maximum-print-size";
	initData.desc = "Adds a new column displaying maximum print size for an image.";
	initData.default_enable = true;
	initData.min_version = "12.0";
	
	initData.config_desc = DOpus.Create.Map();
	initData.config_groups = DOpus.Create.Map();
	var configName = "";
	
	configName = "DPI";
	initData.Config[configName] = "200";
	initData.config_desc(configName) = "DPI to use when calculating print size.";
	initData.config_groups(configName) = "Settings";
	
	configName = "Show DPI";
	initData.Config[configName] = true;
	initData.config_desc(configName) = "Include DPI setting in the column."
	initData.config_groups(configName) = "Settings";
	
	configName = "Show Units";
	initData.Config[configName] = true;
	initData.config_desc(configName) = "Include measurement unit in the column."
	initData.config_groups(configName) = "Settings";
	
	configName = "Centimetres";
	initData.Config[configName] = true;
	initData.config_desc(configName) = "Show the results in centimetres (true) or in inches (false).";
	initData.config_groups(configName) = "Settings";
	
	configName = "Directories";
	initData.Config[configName] = "<dir>";
	initData.config_desc(configName) = "The string used in the column for directories (can be blank).";
	initData.config_groups(configName) = "Non Image";
	
	configName = "Files";
	initData.Config[configName] = "---";
	initData.config_desc(configName) = "The string used in the column for files which aren't images (can be blank).";
	initData.config_groups(configName) = "Non Image";
	
	var col = initData.AddColumn();
	
    col.name = "MaxPrintSize";
    col.method = "OnMaxPrintSize";
    col.label = "Maximum Print Size";
    col.autogroup = true; 
    col.autorefresh = true;
    col.justify = "center";
    col.match.push_back("Yes");
}

function OnMaxPrintSize(scriptColData) {
	
	if (scriptColData.item.is_dir) {
		scriptColData.value = Script.Config["Directories"];
		return;
	}
	
	if (scriptColData.item.metadata() == "image") {	
		
		var prtMaxWidth = scriptColData.item.metadata.image_text.picwidth / Script.Config["DPI"]
		var prtMaxHeight = scriptColData.item.metadata.image_text.picheight / Script.Config["DPI"];
		
		if (Script.Config["Centimetres"] == true) {
			prtMaxWidth = prtMaxWidth * 2.54;
			prtMaxHeight = prtMaxHeight * 2.54;
		}
		
		prtMaxWidth = prtMaxWidth.toFixed(2);		
		prtMaxHeight = prtMaxHeight.toFixed(2);

		var strUnits = "cm";
		var strDPI = " (" + Script.Config["DPI"] + "dpi)";
		
		if (Script.Config["Show DPI"] == false) {
			var strDPI = "";
		}
			
		if (Script.Config["Centimetres"] == false) {
			strUnits = "\"";
		}
		
		if (Script.Config["Show Units"] == false) {
			strUnits = "";
		}
		
		scriptColData.value = prtMaxWidth + strUnits + " x " + prtMaxHeight + strUnits + strDPI;
	}
	else {
		scriptColData.value = Script.Config["Files"];
	}
}
4 Likes