Fastening Preflight check
Hellow Forum,
I do have a slowness while running my Preflight Check - Scritpt,
Generally, Script will call my Created Preflight profile, while I run the script.
what happens is, when frequently script is applied for above two or more time, (assume, preflight panel is in checking status (preflight panel status buffering is slow), my script fails to catch error... ( i presume, this may be because of the preflight panel is still in checking status)
How do i fasten my script which should not escape in catching preflight error.
var myDoc = app.documents.item(0);
myDoc.preflightOptions.preflightWorkingProfile = "XYZ"
var myProfile = app.preflightProfiles.itemByName("XYZ");
var myProcess = app.preflightProcesses.add(myDoc, myProfile);
myProcess.waitForProcess();
var myResults = myProcess.processResults;
var myTest = myResults.indexOf("None");
if (myTest != 0) {
alert ("preflight error")
else
do Print()
thanks & regards
Hi,
I too faced the same problem. Below are some methods you can use to overcome this problem
var myResults = "process is not yet complete";
do{
var myProcess = app.preflightProcesses.add(myDoc, myProfile);
myProcess.waitForProcess();
var myResults = myProcess.processResults;
}while (myResults.match (RegExp ('^process is not yet complete')) != null);
May this help you.
Thanks & Regards,
Balakrishnan R
Similar Messages
-
How can I stop a task sequence if a custom HTA preflight check fails?
In our currently deployment method, we launch an HTA program before initiating the OSD process. This is only when run from the RAP menu, not via PXE. When a user initiates OSD through that menu, they get a message prompting them to close Outlook, and
a countdown of 5 mins, then OSD starts. They also have the ability to click on an 'OK' button to proceed on their own.
I've created a new script which checks WMI if Outlook and/or OCS are open, and if the machine is running on battery, spit out a "Failed" response and stop the HTA. I've also added a "recheck" button to re-do the check, and an 'OK
button if people jsut want to continue.
I'm curious if there is a way to prevent the task sequence from continuing if any of those conditions arent met. Currently it just pops up and says "Failed, Cannot conitue", but if they close the window, the task sequence thinks the program
has run, and the OSD migration starts. I'd like to be able and get the script to cancel the OSD process if a check fails.
Has anyone had success with this, using WINXP? I'd use the MS pre-flight check but it's only for WIN7.Interesting. Thanks for the response. Is there anybody out there that can assist with VBS part of the solution?
Here's the code I'm working with. Currently the battery piece isnt working as it should but I can figure that our, eventually. I'd like to get Jason's proposed solution in the code. If this isn't the right place, I'll take this somewhere
else.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>OSD Preflight checks</title>
<HTA:APPLICATION
APPLICATIONNAME="OSD Preflight checks"
ID="objOSDPreReqChecks"
SCROLL="no"
CONTEXTMENU="no"
SINGLEINSTANCE="no"
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="no"
WINDOWSTATE="normal"/>
<!-- #region STYLEs-->
<style type="text/css">
H1{color:Black;text-align:center;font-family: Arial, Helvetica, sans-serif;font-size: 26px;}
p{font-family:"Arial";font-size:10px;}
fail{color:Red;text-align:center;}
.Version {float:left; font-size:1.0em;font-style:italic;color:#888888;font-weight:bold;}
.Header1 {width: 180px; text-align: right;font-weight:bold;}<!-- '1st column heading -->
H2 {font-family: Arial, Helvetica, sans-serif; text-align: center;}
H3 {font-style: italic;}
.style2 {width: 180px; text-align: left;}
.Header2 {width: 150px; text-align: right;font-weight:bold;}<!-- '2nd column heading -->
.style4 {width: 410px; text-align: left;}
.StatusBar
font-family: Arial, Helvetica, sans-serif;
text-align: center;
.hidden {display: none; visibility: hidden;}
</style><!-- #endregion -->
</head>
<script language="VBScript" type="text/vbscript">
'======================================================================================
' Script
' Version
' Purpose To check a machine is suitable for taking an OS deployment
'======================================================================================
'Features
' Modular design
' Verbose "Debug Mode"
' In-built data validation
' Custom error handling
' Custom error codes - 90x0
' Generic WMI handler
'BUGfix: Change CLng to CDbl to avoid overflow (in GetRAM)
'fixed - moved head section to top to become head > script > body
'fixed - fCheckModel display with leading ,
'fixed - fgetmodels dictionary list
Option Explicit
' #region GLOBAL DECLARATIONS: Persistent fold region
'======================================================================================
'GLOBAL Vars
'Things to just display (in GUI)
Dim strRAM
Dim strCPUInfo
Dim strCPUName
Dim strCPUDesc
Dim iCPUCount
Dim iCPUCoreCount
Dim iRAM
Dim strBIOSver, strBIOSDate, strBIOSInfo
'Time related
Dim TimerInterval 'timer to refresh HTA at start
Dim iTimer 'abort timer
Const iAbortTimeout=300000 'delay before window closes (in milliseconds)
Dim pbTimerID
Dim pbHTML
Dim pbWaitTime
Dim pbHeight
Dim pbWidth
Dim pbBorder
Dim pbUnloadedColor
Dim pbLoadedColor
Dim pbStartTime
'Dictionary
Dim objModelsDict,colKeys,strKey 'models
Dim objApprovedMakesDict
'Misc GLOBAL vars
Dim blnDebug 'set TRUE to trigger debug mode
Dim bAbortBuild 'Boolean flag to abort or not abort
Dim strTemp 'throwaway/scratch
Dim strNamespace 'wmi default namespace for ANY machine
Dim strComputer 'wmi reference to current machine, just .
Dim strService 'WMI service
Dim strQuery 'custom WQL
Dim ErrMsg 'custom error messages
Dim iErrMode 'State machine for error mode
Dim lFlags 'WMI flag
Dim strDisks
'Pre-requisites - things that will cause build to abort if values do not meet spec
Dim strHTAVendor 'Make of hardware
Dim strHTAVendorState
Dim strHTAModel 'Model of hardware
Dim strHTAModelState 'Model state
Dim strHTARAM 'RAM
Dim strHTARAMState 'RAM state
Dim strHTACPUSpeed 'Processor speed
Dim strHTACPUCores 'Number of cores
Dim strHTACPUFullInfo 'CPU + cores
Dim strHTAHDD 'Disk info
Dim strHTAHDDState 'Disk state
Dim strHTACheckRAW 'NTFS check
Dim strHTAArchitecture 'Processor support
Dim strHTAProduct 'Product ID
Dim strHTAOutlook 'Outlook running
Dim strHTAOutlookState 'Outlook state
Dim strHTABattery 'Battery check
Dim strHTABatteryState 'Battery state
'for WQL filters
Dim strWQLPCInfo 'Pre-req - (1) for various inc. domain role (servers)
Dim strWQLRAM 'Pre-req - (2) RAM
Dim strWQLCPU 'Pre-req - CPU speed string (not int)
Dim strWQLBootOrder 'Pre-req - Boot order string
Dim strWQLSATAMode 'Pre-req - HDD mode
Dim strWQLGenericBIOS
Dim strWQLCPUCount 'Pre-req - how many CPUs
Dim strWQLCPUInfo
Dim strWQLFSType 'Pre-req - Check HDD not RAW (i.e. is NTFS)
Dim strWQLDisks 'Disks
Dim strWQLChassis 'Machine type
Dim strWQLID 'Unique code from OEM
Dim strWQLProc 'is Outlook running = False
Dim strWQLBattery 'is on Battery = False
'State
Const cProblem = " Problem!"
Const cRunAgain =" RunCheck: Run System Check Again"
Const cSuccess = " Success!"
Const cPassed=" Pass"
Const cFail=" Fail"
'Pre-requisite to check: SET VALUES HERE vvvvvvvvvvvvvvvv
Const cApprovedOEM="Hewlett-Packard"
Const LegacyOEM1="Dell Inc."
Const LegacyOEM2="IBM"
Const cMinimumMemoryMB = 1000 'RAM in MB
'Const cMinimumMemoryMB = 1000000 'force fail test data RAM in MB
Const cMinFS="NTFS"
' Const cMinFS="HPFS" 'force fail test data
Const iMinCores=1
'Const iMinCores=10099 'force fail cores test data
Const iMinCPUSpeed=2 '20 'in GHz
'Const iMinCPUSpeed=90000 'in GHz
Const iMinCPUArch=32
'Const iMinCPUArch=64
' #endregion
' To hide anything use ID.className = "hidden", to show set to "", e.g. NotFoundArea.className = "hidden"
Sub Window_Onload
Err.Clear
VersionSpan.InnerText = objOSDPreReqChecks.Version 'Get version
self.focus
self.moveTo 100,100 'Move window top left
StatusBar.InnerText="Validating machine..."
document.body.style.cursor = "wait" 'hourglass cursor
'Call PreflightChecks 'use for testing as a VBS only, otherwise HTA timer will call below
TimerInterval = window.setInterval("PreflightChecks",10)
End Sub
Function PreflightChecks
' #region HEADER NOTES: Persistent fold region
'Version history
'ver 5 OCTOBER 2011 - added error handler
'ver 3rd Nov - removed HPonly queries
'// Solution: Custom Script for use with MDT - Adapted from hardwareinfo.vbs Mikael Nystrom – http://deploymentbunny.com
'Typical BIOS content
'Processor Speed = 2133/1066 MHz
'Boot Order = Network Controller,ATAPI CD-ROM Drive,USB device,Hard Drive,Diskette Drive,PnP Device #2,PnP Device #3,PnP Device #4,PnP Device #5,PnP Device #6,PnP Device #7,PnPe #8,PnP Device #9,PnP Device #10,PnP Device #11
'SATA (disk) mode: *IDE,--,RAID,-- or IDE,*AHCI,RAID
'On Error Resume Next
' #endregion
' #region CONSTANTS: Persistent fold region
'======================================================================================
'Fields available in HP BIOS
Const sAsset = "Notebook Asset Tag"
Const sOwner = "Notebook Ownership Tag"
Const sMan = "Manufacturer"
Const sNoteModel = "Notebook Model"
Const sCPU = "Processor Type"
Const sCPUSpeed = "Processor Speed"
Const sRAM = "Memory Size"
Const sModel = "Product Name"
Const sBIOSName ="System BIOS"
Const sBIOSVer = "BIOS Version"
Const sBIOSDate = "BIOS Date"
'Other BIOS stuff you could use too
'Const sOwnerTag = "Enter Ownership Tag"
'Const sBIOS = "PCID"
'Const sBIOS = "Define Custom URL"
'Const sBIOS = "Set Alarm Time"
'Const sBIOS = "PCID Version"
Const TextMode="1" 'text case sensitive for dict obj
'WMI core constants
Const wbemFlagReturnImmediately = 16 'wmi - Causes the call to return immediately.
Const wbemFlagForwardOnly = 32 'wmi - Causes a forward-only enumerator to be returned.
'Forward-only enumerators are generally much faster and
'use less memory than conventional enumerators, but don't allow calls to SWbemObject.Clone_
'Advisory config values - as in "you want to the change these"
Dim strHTABootOrder
Dim strHTASATAMode
'Dim strHTACPU
' #endregion
'======================================================================================
' #region WQL: Persistent fold region
lFlags = wbemFlagReturnImmediately + wbemFlagForwardOnly
'Queries of things to check (HP)
strWQLBootOrder = "select Name, value from HP_BIOSSetting where Name='Boot order'"
strWQLSATAMode = "select Name, value from HP_BIOSSetting where (Name='SATA emulation' or name='SATA device mode')"
strWQLDisks ="SELECT * FROM Win32_DiskDrive where mediatype like 'Fixed%hard disk%'" 'win32_disk only avail after W7
strWQLFSType ="SELECT * from Win32_LogicalDisk where DriveType='3'" 'only bother with HDDs
'Generic WMI query strings
strWQLGenericBIOS="SELECT Manufacturer,SMBIOSBIOSVersion,ReleaseDate FROM Win32_BIOS WHERE PrimaryBIOS = True"
strWQLCPUCount= "SELECT NumberOfProcessors,NumberOfLogicalProcessors from Win32_ComputerSystem"
strWQLCPUInfo="SELECT Name,DataWidth,description,MaxClockSpeed,NumberofCores,NumberOfLogicalProcessors from Win32_Processor"
strWQLPCInfo="SELECT Domain,DomainRole,SystemType,Manufacturer,Model,TotalPhysicalMemory FROM Win32_ComputerSystem"
' strWQLPCInfo="SELECT Domain,DomainRole,SystemType,Manufacturer FROM Win32_ComputerSystem"
strWQLChassis="SELECT ChassisTypes from Win32_SystemEnclosure"
strWQLID="SELECT IdentifyingNumber,UUID from Win32_ComputerSystemProduct"
strWQLRAM="SELECT * FROM Win32_PhysicalMemory"
strWQLProc="SELECT * FROM Win32_Process"
strWQLBattery="SELECT * FROM BatteryStatus Where Voltage > 0"
' #endregion
' #region MAIN algorithm
'=====================================================================================================
' MAIN
'Algorithm
'1) Check make (vendor)
'2) Check model (in list)
'3) Check RAM >x
'4) Check HDD TYPE (HDD is not RAW)
'5) Check CPU architecture
'6) Check outlook
'7) Check battery
'=====================================================================================================
'Initialise
window.clearInterval(TimerInterval) 'Reset timer to 0
' blnDebug=True
blnDebug=False
bAbortBuild=False 'default to DON'T abort
' bAbortBuild=True
'Build list of approved vendors
Set objApprovedMakesDict = CreateObject("Scripting.Dictionary")
objApprovedMakesDict.comparemode=VBTextCompare
objApprovedMakesDict.add cApprovedOEM,"OK"
objApprovedMakesDict.add LegacyOEM1,"OK"
objApprovedMakesDict.add LegacyOEM2,"OK"
objApprovedMakesDict.add "Lenovo","Testdata"
If blnDebug Then Stop
'1) all machines check make
strHTAVendor=fCheckVendor(strWQLGenericBIOS) 'check vendor in BIOS - if vendor not approved ABORT without proceeding
If bAbortBuild=True Then
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - goodbye cruel world"
iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
Else
StatusBar.InnerText="Vendor: " & strHTAVendor & vbTab & " " & strHTAVendorState
'2) Discover current Model
strHTAModel=fGetModelName(strWQLPCInfo) 'get model name from WMI
strHTAModel=fUniversalCheckData(strHTAModel,"'Discover Model - fGetModelName'") 'validate
Call fGetModels 'get list of all valid models (from text file)
strHTAModel=fCheckModel(strHTAModel)
'2a) Model number (optional)
strHTAProduct=fGetComputerSystemProdIDNumber(strWQLID) 'manufacturer's product ID
strHTAProduct=fUniversalCheckData(strHTAProduct,"'Discover ID - fGetComputerSystemProdIDNumber'")
' StatusBar.InnerText=StatusBar.InnerText & VbCrLf & vbTab & "Product Code: " & vbTab & strHTAProduct
'3) Check installed Memory
strHTARAM=fGetRAM(strWQLRAM) 'find RAM size
strHTARAM=fUniversalCheckData(strHTARAM,"'Detect RAM - fCheckRAM'")
strHTARAM=fCheckRAM(strHTARAM) 'check RAM meets req
If strHTARAMState=cFail Then Exit Function
'4) Disk format IS NTFS
strDisks=fGetDrives(strWQLFSType) 'Get formatting info for all drives
strHTACheckRAW=fUniversalCheckData(strDisks,"'Detect filesystem - fCheckNTFS'") 'Validate data
strHTACheckRAW=fCheckNTFS(strDisks) 'Check FS format is acceptable (not RAW)
If strHTACheckRAW=cFail Then Exit Function
'Generic CPU calls
strHTACPUFullInfo="CPUs:" & fGetCPUInfo(strWQLCPUInfo) & " with CPU cores:" & iCPUCoreCount
strBIOSInfo="BIOS version: " & strBIOSver & ", dated " & strBIOSDate
'5a) CPU Speed check (info from http://www.robvanderwoude.com/wmiexamples.php)
strCPUInfo=WMI(strWQLCPUInfo,strNamespace) 'Get CPU details
strTemp=split(strCPUInfo,"@"): strHTACPUSpeed=strTemp(1)
strHTACPUSpeed=fUniversalCheckData(strHTACPUSpeed,"'Check processor - fCheckCPUSpeed'") 'Validate data
strHTACPUSpeed=fCheckCPUSpeed(strHTACPUSpeed) 'Check CPU clock speed
'5b) cores check
strHTACPUCores=fUniversalCheckData(iCPUCoreCount,"Check core count - fCheckCores") 'Validate data
iCPUCoreCount=fCheckCores(iCPUCoreCount) 'pass or fail?
'5c) CPU address width
strHTAArchitecture=fUniversalCheckData(strHTAArchitecture,"Check core count - fCheckCores") 'Validate data
strHTAArchitecture=fCheckCPUArch(strHTAArchitecture)
'6) Check outlook
strHTAOutlook=fCheckProcess(strWQLProc)
'7) Check Battery
strHTABattery=fCheckBattery(strWQLBattery)
'end checkss
document.body.style.cursor = "default"
'Display hardware values in GUI (in table)
Vendor.innerhtml = strHTAVendor 'Use str...var..STATE if you want Pass/fail text instead
Model.innerhtml = strHTAModel
Product.innerhtml = strHTAProduct
RAM.innerhtml = strHTARAM
CPUspeed.innerhtml = strHTACPUSpeed
CPUInfo.innerhtml = strHTACPUFullInfo
HDDFS.innerhtml = strHTACheckRAW
CapableArchitecture.innerhtml=strHTAArchitecture
BIOSversion.innerhtml = strBIOSver
BIOSDate.innerhtml = strBIOSDate' CPUName.innerhtml = strCPUDesc 'GetCPUName
End If
'======================================================================================
' #endregion
End Function
'generic WMI queries, by field and namespace
Function WMI(strQuery,strNameSpace)
'Aim: generic WMI calls
'return value of BIOS
On Error Resume Next
Dim colItems,objItem
Dim objWMI
Const strService = "winmgmts:{impersonationlevel=impersonate}//" 'binding to WMI
Const strComputer = "." 'this machine
Set objWMI = GetObject(strService & strComputer & strNamespace) 'GLOBAL wmi
Set colItems = objWMI.ExecQuery(strQuery,,lFlags)
For Each objItem In colItems
If Err Then
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "WMI query: " & strQuery & " in " & strNamespace & objItem.Name
Call ErrHandler("WMI error " & strQuery,1)
Else
WMI=objItem.Name 'Return value
End If
Next
End Function
Function fGetModelName(strWQLPCInfo)
'Aim: Get model name from BIOS - WMI field sometimes varies if laptop, so try two
'Return STRING: Model string from BIOS or "UNKNOWN" if null
On Error Resume Next
Dim colPCInfo,objPCItem
Dim strModel
Set colPCInfo = GetObject("winmgmts:").ExecQuery(strWQLPCInfo,"WQL",lFlags)
If Err Then
Call ErrHandler("fGetModelName: Error querying WMI " & strWQLPCInfo,2)
Else
For Each objPCItem In colPCInfo
If Not IsNull(objPCItem.Model) Then
strModel=objPCItem.Model
' iRAM=objPCItem.TotalPhysicalMemory
Else
If (strHTAVendor=cApprovedOEM And IsLaptop = True) Then ' resort to HP specific query for older laptops
'Notebook
strModel=QueryHPBIOS(sNoteModel)
if strModel="" then strModel=QueryHPBIOS(sModel) 'try alt value
Else
strModel=QueryHPBIOS(sModel)
End If
End If
Next
End If
If strModel = "" Then
fGetModelName = "UNKNOWN"
Model.style.visibility="hidden"
Else
fGetModelName=strModel
End If
End Function
'====================================================
'====================================================
Function fGetRAM(strQuery)
'Aim: get RAM installed. NB Win32_ComputerSystem::TotalPhysicalMemory may not be accurate
'Return integer
On Error Resume Next 'equiv to Err.Clear
Dim colItems, item
Dim iTotalMemory
Set colItems = GetObject("winmgmts:").ExecQuery(strQuery,"WQL",lFlags)
If Err Then
Call ErrHandler("fGetRAM: Error querying " & strQuery,2)
Else
iTotalMemory = 0
For Each item In colItems
iTotalMemory = iTotalMemory + CDBL(item.Capacity)/(1024^2)
Next
End If
If iTotalMemory = "" Then
fGetRAM = "RAM UNKNOWN"
RAM.style.visibility="hidden"
Else
fGetRAM=iTotalMemory
End If
End Function
'====================================================
'====================================================
Function fGetCPUInfo(strQuery)
'Aim: query WMI for CPU info - number and number of cores
'Return: function=CPU count, var for the cores: iCPUCoreCount, strHTAArchitecture, strCPUDesc
On Error Resume Next
Dim colItems, objItem
Dim NumberOfProcessors
Set colItems = GetObject("winmgmts:").ExecQuery(strQuery,"WQL",lFlags)
If Err Then
Call ErrHandler("GetCPUInfo: Error querying " & strQuery,2)
Else
For Each objItem In colItems
If Err Then
Else
If Not IsNull(objItem.NumberOfCores) Then
NumberOfProcessors = Trim(objItem.NumberOfCores) 'NumberOfProcessors
End If
If Not IsNull(objItem.NumberOfLogicalProcessors) Then
iCPUCoreCount = Int(Trim(objItem.NumberOfLogicalProcessors))
End If
If Not IsNull(objItem.DataWidth) Then
strHTAArchitecture=Trim(objItem.DataWidth) & "-bit"
End If
If Not IsNull(objItem.description) Then
strCPUDesc = Trim(objItem.description) 'cpu name
End If
End If
Next
If NumberOfProcessors = "" Then
NumberOfProcessors = "UNKNOWN"
End If
fGetCPUInfo = Int(NumberOfProcessors)
' iCPUCoreCount = Int(NumberOfLogicalProcessors)
End If
End Function
'====================================================
'====================================================
Function fGetComputerSystemProdIDNumber(strWQLID)
'Aim: Get UUID from Win32_ComputerSystemProduct
'Return: great big integer
Dim colSys,objSys
Dim strUUID
On Error resume next
Set colSys = GetObject("winmgmts:").ExecQuery(strWQLID,"WQL",lFlags)
If Err then
Call ErrHandler("fGetComputerSystemProdIDNumber: Error querying " & strWQLID,2)
Else
For Each objSys In colSys
If Not IsNull(objSys.IdentifyingNumber) Then
strUUID = Trim(objSys.IdentifyingNumber)
End If
Next
If strUUID = "" Then
fGetComputerSystemProdIDNumber = "UNKNOWN"
Else
fGetComputerSystemProdIDNumber = strUUID
End If
End If
End Function
'=================================================================================
'=================================================================================
Function fGetDrives(strQuery)
Dim colDisks,objHDD
Dim strDriveType, strDiskSize, strDisk
Dim strDiskFSType
Dim iGBUnits
On Error Resume Next
iGBUnits=1073741824
Dim iRAW
iRAW=0
Set colDisks = GetObject("winmgmts:").ExecQuery(strQuery)
For Each objHDD In colDisks
Select Case objHDD.DriveType
Case 1 strDriveType = "Drive could not be determined."
Case 2 strDriveType = "Removable Drive"
Case 3 strDriveType = "Local hard disk."
Case 4 strDriveType = "Network disk."
Case 5 strDriveType = "Compact disk (CD)"
Case 6 strDriveType = "RAM disk."
Case Else strDriveType = "Drive type Problem."
End Select
strDiskFSType = objHDD.FileSystem
'Find C
If objHDD.Name="C:" Then
If isNull(objHDD.FreeSpace) Then
If blnDebug=True then Call ErrHandler("ALERT!! Volume " & objHDD.Name & "is RAW",1) 'Abort/clean
fCheckDrives="ALERT!! Volume " & objHDD.Name & "is RAW"
End If
End If
strDiskSize = Int(objHDD.Size /iGBUnits) & "GB" 'calc size of disk
strDisk = strDisk & VbCrLf & "Vol " & objHDD.Name & " (" & strDriveType & ") size: " & strDiskSize & " (free: " & Int(objHDD.FreeSpace /iGBUnits) & "GB), " & strDiskFSType
fGetDrives=strDisk
Next
If (Err.Number <>0) Then
Call ErrHandler("WMI Property Query Error: [" & Err.Number & "]",2)
fGetDrives = -1
Exit Function
End If
End Function
'=================================================================================
'=================================================================================
Function fUniversalCheckData(varData,strStage) 'template
'Aim: Check value passed...
'is not blank
'is in range x..y
'spelt OK
'is in a list
'format is text, numeric
'return: string: the original value
On Error Resume Next
Dim Err
if blnDebug Then StatusBar.InnerText = StatusBar.InnerText & VbCrLf & "Validating " & strStage & " data..."
If Err Then
Call ErrHandler("WARNING: Error discovering value in " & strStage,2) '1=Quit,2=Warn
strHTAModel="Unknown"
Else
Select Case varData
Case IsEmpty(varData) Or IsNull(varData)
Call ErrHandler("WARNING: Error in "& strStage,2) '1=Quit,2=Warn
fUniversalCheckData="Unknown"
Case IsNumeric(varData)
If varData<0 Then
Call ErrHandler("WARNING: Value negative"& strStage,2) '1=Quit,2=Warn
fUniversalCheckData="Unknown"
End if
' & varData &
Case IsDate(varData)
Case Else
fUniversalCheckData=varData 'Data OK - return value unchanged
End Select
End If
End Function
'=================================================================================
'Checks - follow if true DO, if false warn/abort
'=================================================================================
Function fCheckBattery(strQuery)
'Aim: Find if battery is running
'Return pass/fail
On Error Resume Next 'equiv to Err.Clear
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Dim colItems, item
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
Set colItems = objWMIService.ExecQuery("SELECT * FROM BatteryStatus Where Voltage > 0", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In colItems
if objItem.PowerOnline = True Then
strHTABattery=objItem.PowerOnline
strHTABatteryState = cFail
Err.Raise 9010,"fCheckBattery",strHTABattery & " Laptop running on battery. OSD Cannot continue."
Call ErrHandler(ucase(strHTABatteryState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - Laptop on Battery. Please plug into an outlet before proceeding."
iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
Else
strHTABatteryState = cPassed
End if
Next
fCheckBattery=strHTABattery
End Function
'====================================================
Function fCheckProcess(strQuery)
'Aim: Find if outlook is running
'Return pass/fail
On Error Resume Next 'equiv to Err.Clear
Dim colItems, item
Set colItems = GetObject("winmgmts:").ExecQuery(strQuery,"WQL",lFlags)
For Each item In colItems
if item.Name = "OUTLOOK.EXE" Then
strHTAOutlook=item.Name
strHTAOutlookState = cFail
Err.Raise 9010,"fCheckOutlook",strHTAOutlook & " running. OSD Cannot continue."
Call ErrHandler(ucase(strHTAOutlookState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - Outlook Running, please close outlook before proceeding."
iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
Elseif item.Name = "communicator.exe" Then
strHTAOutlook=item.Name
strHTAOutlookState = cFail
Err.Raise 9010,"fCheckOutlook",strHTAOutlook & " running. OSD Cannot continue."
Call ErrHandler(ucase(strHTAOutlookState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "FATAL ERROR - Communicator Running, please close OCS before proceeding."
iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript")
Else
strHTAOutlookState = cPassed
End if
Next
fCheckProcess=strHTAOutlook
End Function
'====================================================
'1 - Make
Function fCheckVendor(strVendor)
'Aim: Check make is one the OS/build is designed For
'Return: STRINGS for "Make", BIOS version and BIOS date (generic): strHTAVendorState pass or fail
On Error Resume Next
Dim colItems,objItem
Set colItems = GetObject("winmgmts:").ExecQuery(strVendor, "WQL", lFlags)
For Each objItem In colItems
strHTAVendor=objItem.Manufacturer
if objApprovedMakesDict.exists(strHTAVendor) then
strBIOSver=objItem.SMBIOSBIOSVersion
strBIOSDate=Mid( objItem.ReleaseDate, 5, 2 ) & "/" & Mid( objItem.ReleaseDate, 7, 2 ) & "/" & Left( objItem.ReleaseDate, 4 )
strHTAVendorState=cPassed
Else
strHTAVendorState=cFail
Err.Raise 9010,"fCheckVendor",strHTAVendor & " found. The build will not work on this make of hardware"
Call ErrHandler(ucase(strHTAVendorState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
bAbortBuild=True
end if
Next
fCheckVendor=strHTAVendor
End Function
'=================================================================================
'=================================================================================
'2 - Models check
Function fCheckModel(strThisModel)
'Aim Check target machine is in list of models
'Return string
On Error Resume Next
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking model..." & VbCrLf
If objModelsDict.exists(trim(strThisModel)) then ' if current model in objDict then huzzah
strHTAModelState=cPassed
StatusBar.InnerText=StatusBar.InnerText & vbTab & "Model detected: " & vbTab & strHTAModelState
Else
strHTAModelState=cFail
Err.Raise 9010,"fCheckModel",strThisModel & " found. The build will not work on this model of hardware"
Call ErrHandler(ucase(strHTAModelState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1)
end if
fCheckModel=strHTAModel
End Function
'=================================================================================
'=================================================================================
'3 - RAM
Function fCheckRAM(strRAM)
'Aim: Check installed RAM > x
'Return string digits with units, e.g. 4GB
'use strHTARAM for value
'==================================================================
' Memory Preflight Check (from MDT2012)
'==================================================================
On Error Resume Next
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking RAM..."
If Err.Number <> 0 Then
Call ErrHandler("Error occurred while calculating computer's memory.",2)
End If
fCheckRAM = Int(strRAM/1024) & "GB" 'format in GB
If Int(strRAM) > cMinimumMemoryMB Then
strHTARAMState=cPassed 'Sufficient memory - show whole number in GB"
StatusBar.InnerText=StatusBar.InnerText & vbTab & "RAM installed: " & vbTab & strHTARAMState
Else
strHTARAMState=cFail
Err.Raise 9030 ,"fCheckRAM","Not enough memory in this machine!" & " Required physical memory is: " & cMinimumMemoryMB & " MB."
Call ErrHandler(ucase(strHTARAMState) & ": " & Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1) 'abort build
End If
End Function
'=================================================================================
'=================================================================================
'4 - NTFS disk
Function fCheckNTFS(strDiskFS)
'Aim: Check HDD is NTFS
'Return string
On Error Resume Next
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking file system is not RAW..."
If Instr(1,strDiskFS,cMinFS,VBTextCompare)<>0 Then
fCheckNTFS=cMinFS 'disk format is OK (NTFS)
StatusBar.InnerText=StatusBar.InnerText & vbTab & " File system: " & cPassed
Else
fCheckNTFS=cFail
Err.Raise 9040 ,"fCheckNTFS","WARNING: Disk not correct file-system. Type required is: " & cMinFS & "." & VbCrLf & _
"The deployment will fail unless you reformat the target disk immediately."
Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",2) 'halt build
End If
End Function
'====================================================
'=================================================================================
'5 - CPU checks
'=================================================================================
Function fCheckCPUSpeed(strCPU) 'any HW
'Aim: Check CPU speed
'Return string = number + appropriate units, e.g. 5HGz (strCPU)
On Error Resume Next
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking CPU spec..."
Select Case Right(strCPU,3) 'check units
Case "MHz"
strCPU=Left(strCPU,4)/1000 'reformat to GHz
Case "GHz"
strCPU=strCPU 'unit already OK
Case Else
Call ErrHandler("CPU units are unknown",2)
End Select
'Check clock speed
If Int(Left(trim(strCPU),1))>=iMinCPUSpeed Then
fCheckCPUSpeed=strHTACPUSpeed 'CPU is fine i.e don't change value
StatusBar.InnerText=StatusBar.InnerText & vbTab & "CPU Speed: " & cPassed
Else
fCheckCPUSpeed=cFail 'already in GHz
Err.Raise 9050,"fCheckCPUSpeed","CPU speed pre-requisite failed. Minimum processor clock speed is: " & iMinCPUSpeed
Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1) 'halt build
End If
End Function
'=================================================================================
'=================================================================================
Function fCheckCPUArch(strCPUArch) 'any HW
'Aim: Check CPU width
'Return string
On Error Resume Next
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking CPU bus width..."
'Check clock speed
If Int(Left(trim(strCPUArch),2))>=iMinCPUArch Then
fCheckCPUArch=strHTAArchitecture 'CPU is fine i.e don't change value
StatusBar.InnerText=StatusBar.InnerText & vbTab & "CPU width: " & cPassed
Else
fCheckCPUArch=cFail 'already in GHz
Err.Raise 9052,"fCheckCPUArch","CPU width pre-requisite failed. Minimum processor width required is: " & iMinCPUArch
Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",1) 'abort build
End If
End Function
'=================================================================================
Function fCheckCores(iCores)
'Aim: Check hardware (CPU) has a minimum number of cores
'Return Integer
On Error Resume Next
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & "Checking CPU cores..."
If iCores>=iMinCores Then
fCheckCores=iCores
StatusBar.InnerText=StatusBar.InnerText & vbTab & "Core count: " & vbTab & cPassed
'StatusBar.InnerText=StatusBar.InnerText & vbTab & "CPU cores: " & cPassed
Else
fCheckCores=cFail
Err.Raise 9051,"fCheckCores","WARNING: Not enough cores on the CPU to support the build. Minimum CPU cores is: " & iMinCores
Call ErrHandler(Err.Description & " (Code: " & Err.Number & " - " & Err.Source & ")",2) 'halt build
End If
End Function
'=================================================================================
'=================================================================================
Function fCheckHPCPUSpeed 'HP ONLY
'Aim: Check CPU speed
'return: string
'Check CPU speed
On Error Resume Next
strWQLCPU = "processor speed"
strTemp=QueryHPBIOS(strWQLCPU,"")
Select Case Right(strTemp,3)
Case "MHz"
strTemp=Left(strTemp,4)/1000 'reformat to GHz
Case "GHz"
strTemp 'is OK
Case Else
Call ErrHandler("CPU is unknown",2)
End Select
'Check clock speed
If strTemp>=iMinCPUSpeed Then
fCheckCPUSpeed= strTemp & "GHz"
Else
Err.Raise 9050,,"CPU speed pre-requisite failed"
Call ErrHandler("CPU is too slow",1)
fCheckCPUSpeed=cFail 'already in GHz
End If
End Function
'=================================================================================
'=================================================================================
Function fGetModels
'Aim: Read external text file
'return: dictionary object - models as key, integer as value e.g. Dell Optiplex,12
'On Error Resume Next
Dim objFSO
Dim objFile
Dim strFile
Dim strEntry
Dim n
Dim strfilepath
Dim iLineCount 'count lines to avoid listing first item with ,.
Set objModelsDict = CreateObject("Scripting.Dictionary")
set objFSO=CreateObject("Scripting.FileSystemObject")
Const ForReading=1
strfilepath = Left(window.location.pathname,InStrRev(window.location.pathname,"\"))
strFile=strfilepath & "Models.txt"
set objFile=objFSO.OpenTextFile(strFile,ForReading)
iLineCount=0
'read in each line of data until you reach the end of the file
do While objFile.AtEndOfStream<>True
strEntry=objFile.ReadLine
'you can now do what ever you want with the line as referenced with the strEntry variable such as
'echoing it back (e.g. wscript.Echo strEntry) or passing it as a variable to a function of subroutine (e.g. MyFunction strEntry)
objModelsDict.comparemode=VBTextCompare
objModelsDict.Add strEntry,iLineCount
iLineCount=iLineCount+1
If blnDebug then
If iLineCount=1 Then
StatusBar.InnerText=trim(strEntry)
Else
StatusBar.InnerText=StatusBar.InnerText & ", " & trim(strEntry) 'list models
End If
End If
Loop
objFile.Close
End Function
'=================================================================================
'=================================================================================
'====================================================
Function ErrHandler(strErrorMsg,iErrMode)
'Aim: to handle error states
' 1 = Abort
' 2 = Warn
'Return 'Appropriate text message explaining the error
'====================================================
Const msgTitle="SCCM Deployment Preflight Checklist"
'On Error Resume Next '< don't use that as we want to KEEP the error properties
'Abort=1
If iErrMode=1 Then
StatusBar.InnerText=strErrorMsg 'overwrite status with Error message
' StatusBar.InnerText=StatusBar.InnerText & VbCrLf & " " & strHTAOutlook & " " & strHTAVendor & " " & strHTAVendorState & _
' VbCrLf & " " & strHTAModel & strHTAModelState & _
' VbCrLf & " " & strHTARAM & strHTARAMState & _
' VbCrLf & " " & strHTAHDD & strHTAHDDState
iTimer = window.setTimeout("Abort", iAbortTimeout, "VBScript") 'Abort (close) after n seconds
'MsgBox strErrorMsg,vbExclamation,msgTitle
'ErrBar.class=""
ElseIf iErrMode=2 Then
'Warning
StatusBar.InnerText=StatusBar.InnerText & VbCrLf & strErrorMsg & " " '& "(" & Err.Description & " :" & Err.Number & ")"',vbExclamation,msgTitle
Err.Clear
End If
End Function
'====================================================
Sub Abort
'Aim: Quit gracefully
window.close()
End Sub
</script>
<!-- #region BODY -->
<body>
<br />
<div>
<span style="version"> <span id="VersionSpan"></span></div>
<div style="text-align: center;">
<H1 style="font-family: Arial, Helvetica, sans-serif; font-size: large; text-align: center; color: #000000; text-transform: capitalize">System information</H1>
<span>
<table border="1" cellspacing="0" cellpadding="0" style="width: 912px"
id="SysInfoTable">
<tr class="h1">
<td align="right" class="Header1" style="width: 76px; height: 18px">
</td>
<td align="right" class="Header1" style="height: 18px"><em id="VendorCaption">Vendor</em></td>
<td align="left" class="style2" style="height: 18px"><span id="Vendor"></span></td>
<td align="right" class="Header2" style="height: 18px"><em id="ModelCaption">Model</em></td>
<td align="center" class="style4" style="width: 400px; height: 18px"><span id="Model"></span></td>
</tr>
<tr>
<td align="right" class="Header1" style="width: 76px">
</td>
<td align="right" class="Header1"><em id="ProductCaption">Product ID</em></td>
<td align="left" class="style2"><span id="Product"></span></td>
<td align="right" class="Header2"><em id="RAMCaption">Memory(in MB)</em></td>
<td align="left" class="style4" style="width: 400px"><span id="RAM"></span></td>
</tr>`
<tr>
<td align="right" class="Header1" style="width: 76px">
</td>
<td align="right" class="Header1"><em id="CPUCaption">CPU speed (in GHz)</em></td>
<td align="left" class="style2"><span id="CPUspeed"></span></td>
<td align="right" class="Header2"><em id="CPUInfoCaption">No: CPU\Cores</em></td>
<td align="left" class="style4" style="width: 400px"><span id="CPUInfo"></span></td>
</tr>
<tr>
<td align="right" class="Header1" style="width: 76px">
</td>
<td align="right" class="Header1"><em id="DiskFSCaption">Filesystem info</em></td>
<td align="left" class="style2"><span id="HDDFS"></span></td>
<td align="right" class="Header2"><em id="CapableArchCaption">Architecture</em></td>
<td align="left" class="style4" style="width: 400px"><span id="CapableArchitecture"></span></td>
</tr>
<tr>
<td align="right" class="Header1" style="width: 76px">
</td>
<td align="right" class="Header1"><em id="BIOSVerCaption">BIOS version</em></td>
<td align="left" class="style2" ><span id="BIOSVERSION"></span></td>
<td align="right" class="Header2"><em id="BIOSDateCaption">BIOS Date</em></td>
<td align="left" class="style4" style="width: 400px"><span id="BIOSDate"></span></td>
</tr>
</table>
</span>
</div>
<div class="StatusBar">
<br />
<Span id="StatusBar">Loading...please wait.</Span>
</div> <br><br>
<div align="center">
<input type="button" name="btnStop" id="btnStop" value="Continue" onclick="Abort">
<input type="Button" value="Re-Scan Machine" name="button1" onClick="Window_Onload" class="button">
</div>
</body><!-- #endregion -->
</html> -
Preflight check in CS5 dramatically slows down file opening
The preflight check option in InDesign does not seem to run in the background. As a result, it now takes around 5 times longer to open a file, as you have to wait for the preflight check to finish before you can do anything. Sure you can turn it off, but that kind of defeats the point of having it. Is there any way to configure it so that it runs in the background, or is this just another feature that is basically rendered unusable?
What I am seeing is this: I open an InDesign file. The spread appears and all the objects placed on that layout appear, just as usual. Then I get the spinning beachball, which coincides with the preflight checking the file (you can see the word "checking" in the bottom left of the frame). The beachball stops and I can finally access the file once the preflight chack is complete. So, on that basis, it doesn't seem to be running in the background. Turning preflight off eliminates the problem. So yes, the file is open and visible, but I can't get at it until the preflight check is complete.
For reference, I am using OS 10.6.6 and InDesign 7.0.4.550.
Note that using the Basic preflight check, I don't get these problems, but using a custom profile, I do. I started trying to see if I could pinpoint what in the extra checks was causing the problem, but I failed: I took the basic profile, which works fine, and added the first extra check from my custom profile, which is to Check OPI Links in LINKS. I immediately got the slow down. But unchecking that in my custom profile, didn't speed things up, which suggests that it's more than one thing. If it helps, my custom profile is cheking for:
LINKS
Links missing or modfied
Inaccessible URLs
OPI Links
COLOUR
Transparency blending space
Colour spaces not alowed
Overprinting applied to white
Registration applied
IMAGES & OBJECTS
Image resolution
Interactive elements
TEXT
Overset text
Font missing
Glyph mising
Font types not allowed
DOCUMENT
Bleed & slug setup -
Creating a preflight check for rich black conversion
What settings do I need to create a preflight check that will take all the blacks in a job and covnvert them to a set CMYK value?
It's far more complicated than that - you need to define what you mean by "black", i.e. which plates are active, at what ranges of percent coverage, and what margin of error do you want on the matches. Is a 20/20/20 RGB object "black", or a 0/0/1/100 CMYK? What are you converting to?
If you want to push a multi-plate color to K-black, you can create a new Fixup using the the 'Convert Colors' task, setting it to "convert to destination" and something like dot gain 15. The important thing is to first create a new Check that finds only the objects you want - look at some of the inbuilt examples for ideas, such as the "Line uses rich black" Check.
To convert an object to a specific non-black CMYK value is more complicated; there's no inbuilt task for that. You'd have to bounce through a spot channel, which gets messy. That type of color-change should always be done in the original document. -
SCCM 2012 and MDT 2013 PreFlight Checks
Hi,
Can anyone help me with a preflight check in MDT (Winpe) checking for an Active Directory Computer account. By default the pre-flight is before the page which has the field for entering the computer name. If I was to move the page later in the wizard sequence
would I be able to use the variable OSDComputerName. Additional does anyone have any Powershell or vscript code which could query AD for the computer account existence?
As I'll need to authenticate with AD I could use the variables OSDJoinAccount, OSDJoinPassword, OSDDomainName.
MikeHi,
Please refer to the link below:
MDT Scripts, Front Ends, Web Services, and Utilities for use with ConfigMgr/SCCM
http://mdtcustomizations.codeplex.com/
Note: Microsoft provides third-party contact information to help you find technical support. This contact information may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information.
We
are trying to better understand customer views on social support experience, so your participation in this
interview project would be greatly appreciated if you have time.
Thanks for helping make community forums a great place. -
Preflight check for invisible text?
Hello!
While there is an indicator for overset text in Indesign preflight, is it also possible to check for "invisible" text?
This will give a warning if objects, e.g. a picture or colored box, are placed over text (witout text wrap).
Have a nice day
MaggernI suppose I shouldn't say that, since so many things actually are possible via scripting. I'd ask over in the ID scripting forum (InDesign Scripting). Seems like one approach might be to look for objects that fall within the geometric bounds of a text frame.
-
IDCS4 V6.0 memory issue with preflight
When I create a custom profile for preflight and run it i encounter memory issue. Hard disk starts running indefinitely and after a while InDesign crashes. I have try, by steps, to make the profile less demanding (I should try the reverse way) but instead of crashing, indesign finally sends memory error message and can crash later. Apple Activity monitor shows that sometimes indesign requires all the memory available (1,5Go)
Any of you have ever try to set a custom preflight profile ? The basic one is really too tolerant.
Thank you.
I'am on Imac 3,06 2 GoI've spent quite a bit of time working with custom preflight profiles on my MacBook Pro, 2 Gb memory, Mac OS X 10.5.5. I have never run into a memory error. In fact, I've never ever run into a memory error in InDesign. Memory errors can occur because of defective fonts. Have you tried with different fonts? Have you tried on a different computer?
Yes, the [Basic] preflight checks only for missing fonts, missing or modified graphics, and overset text. You need to work with custom preflight profiles depending on your particular workflow. -
Preflight error: "character references .notdef glyph"
I have a 4 page document in InDesign that I exported as separate page pdfs. Three pages were fine, but one has garbled type. A preflight check shows this error for the bad text on that one page:
"Character references .notdef glyph"
I can't see anything different about those sentences, but tried replacing them with fresh type. Also tried exporting the InDesign document as an INX file and reopening it. Tried copying the page to a fresh document. None of these worked. I'm baffled. I use that font for this newspaper every month and have never seen this problem before, although this is the first time with the CS4 apps.
I can convert the text to outline, but want to solve this.
Thanks for any ideas.
(Mac Pro, CS4 software)The font is Utopia regular, a postscript type 1 font. InDesign version CS4, Quark 6 I believe. The pdf was created in InDesign (export.. Adobe PDF..press quality, PDF/X1A 2001). I also tried exporting a postscript file and running it through Distiller, but got the same result.
This is the same font and same method I have been using for a long time, the only thing that is new is CS4 versions of ID and Acrobat. The rest of the document did not have these errors. I tried pasting the text into a text program (and then pasting back) to clear away possible formatting, but that didn't help.
Hope you have some suggestions.
Thanks -
1.3 save as preflight problem
in acrobat, when we do a save as 1.3 preflight check (we do this to flatten transparencies among other things) acrobat ask you to save the new document and after this it does the preflight action.
We then open the new 1.3 document and the new document is ok. But we have a problem with the images. The new created document has the images with a very high jpg compression. there's a big loss of quality when compared to the original 1.4 document.
This also happens whe we do a flatten transparency preflight check. I must say that acrobat does not touch the resolution of the image.
Thanks
PalodislowWhat is the OS?
When checked in logs it mentions the opmnctl failed to start. Please start it manually. When tried to start manually, it again forks too many processes. The log says the patchset completed successfully but some configuration assistants failed following are the ones.Please post the complete error message from the log file.
First two ran successfully. Third one forked too many processes which had to killed(maximum limit of the system is 30000). What are the names of those processes?
Thanks,
Hussein -
Hello
I have a PDF which passes its Preflight check when i open in Acrobat 10 but if i then use the Measuring tool and then after run the same preflight Analyse it fails and tells me its not a comliant PDF/x-1a document.
I dont understand why this is , as i did not think that using the measuring tool would make any chnages to the PDF and thus causing it to fail.
Any ideas?Measurements apply annotations which aren't compatible with the PDF/X-1a standard, and require the PDF base version to increase when it's saved.
If you run the Preflight check it will explain in detail what's failed. -
PDF created with ID CS5.5 won't open in Acrobat 9
I have a PDF that was created in InDesign CS 5.5 — using the same standard export profiles we use for hundreds of other files — that appears to have no issues opening in Acrobat X Pro, but which will not open correctly in Acrobat 9 Pro. (Mac & Windows versions)
File created on a Mac with CS 5.5, exported with a standard export preset conforming to the PDF/X-4 standard (compatible with Acrobat 7).
PDF opens and displays as it should in Acrobat X. PDF sent to a color proofer running GMG ColorProof 5 RIP also processes normally.
But when trying to open the same PDF file in Acrobat 9 — either Windows or Macintosh — we get the error:
"An error exists on this page. Acrobat may not display the page correctly. Please contact the person who created the PDF document to correct the problem."
Half the type and much of the art (simple bitmap polygons) does not display, as if it were missing. (The file does open, it just opens incorrectly.)
I believe it's unrelated, but maybe worth mentioning that this PDF reported a "Character references .notdef glyph" error, which we occasionally get on some files. This does not create issues on press (it hasn't yet), but it technically outside the PDF/X-4 spec, so it gets flagged. Deleting the type referenced by the error removes the warning, but does not correct this issue, where the page doesn't display.
I've looked through the document properties and run several preflight checks to look for aberrations in the file, anything that's out of spec, and I can't find anything.
Again, there's nothing in this file that isn't in literally hundreds of other files, so I'm at a loss as to what's creating this issue.an update
after going through the layout in question piece by piece, removing then adding back in each individual item one at a time until the error occurred, I discovered two artifacts in the layout that were the cause. Don't ask me what they were, but removing them solved the issue.
They weren't visible, as they weren't even points, really — as if they were two points of an incompletely deleted object.
My first guess was a corrupted frame, as I've seen that happen a number of times, even going back to Quark 3, where an individual object, or the art placed in it, munges the postscript somehow and then the resulting document. That's why I usually start removing items on the page until the problem goes away, to find the culprit. In this case, they were hard to find as they were single points behind other objects (and were getting selected inadvertently with them).
Anyway, not sure what that was, but it solved my issue. -
Hi.
Just upgraded two 10.7 servers, one master and one replica to 10.8.2. Found replica was no longer a replica. Went to add it. Errors. Tried a preflight check. This is what it tod me.
2012-12-18 03:40:28 +0000 NSMutableDictionary *_getRootDSE(const char *): rootDSE not found
2012-12-18 03:40:28 +0000 Error: Unable to determine the master's software version.
Any ideas? Thanksyou can not mix versions of the os when doing a replica so
10.4.x can only replicate 10.4.x
10.5.x can only replicate 10.5.x
it is in the docs. -
PDF with garbled text after editing on a Mac
Hi all, hope someone can help. I'm struggling to get to the bottom of a very bizarre issue. I have a number of PDFs that were originally created using ABBYY's FineReader OCR software. They display fine, and I can "copy" text from the documents to the clipboard with no issues.
However, as soon as I bring them over to the Mac side and make a change to the document using OS X's Preview, things go wrong. As soon as any changes are made, I can no longer copy text from the document to the clipboard - the text that ends up on the clipboard is garbled. However, the display text is still perfectly legiable.
For example. here's a link to a very simple and basic PDF document, that was originally a perfectly fine PDF but became mangled.
Broken PDF
Using Acrobat I've removed all the graphics and most of the text from the document, leaving just a single text box ("AUTUMN SPECIAL!").
So if I highlight the text on the page which reads:
AUTUMN SPECIAL!
what ends up on the clipboard is:
*)﴿*%& (﴾'"!# $
I've done a whole ton of reading about the internals of PDFs and I'm pretty certain that this is something to do with the CMAP character-to-glyph mappings; but I've no idea what to do to fix it. Acrobat's PreFlight check for the PDF/A 2a standard tells me:
"Text cannot be mapped to Unicode"
"Type 2 CID font: CIDToGIDMap invalid or missing"
Also, an inventory report (available here) shows the letter "A" being mapped to a space, letter "C" to a exclamation mark etc - all obviously wrong. However, "Analyze and Fix" won't fix the problem
Does anyone have any advice on how to fix this? I know it's definitely a bug somewhere on the Mac side and the obvious answer would be to avoid editing documents using OS X Preview, but unfortunately I have several hundred documents in this state. Is there any way to fix the mapping, or otherwise return the text to a state where it can be accurately copied from the document?
Thanks very much in advance for any help or advice given.I doubt you could fix this. Generally a "garbled" file is considered unusable for copying, and that's that. If a PDF uses random mappings instead of standard ones it looks fine on screen, but text extraction is impossible.
Short of converting every page to bitmap and OCRing again. -
Illustrator cs2 creates pdf with anomalies
I have Illustrator cs2 (12.0.1) and I create pdfs with it and send these to my clients for proofing. When I view the pdf in acrobat standard 6 it looks fine. When my sales people and clients view it in reader 8 they get a color break down that is incorrect. For example they see a color that should not be there (in the pdf below it is the blue cyan in the logo). So I need to figure out how to fix this problem. Also it does not happen on every pdf.
here is a link to a pdf
www.ebfchurch.org/usb3.pdf
In the link is a pdf that has a problem, and a jpeg to show what it should look like.
When I save the pdf I have tried turning illustrator off ill. editing capabilities and saved as a V.7 pdf. Not sure what else to try besides making the logo a jpg. Would upgrading to reader 8 help? Would this add that to my selections in illustrator?
The other anomalies are I's and some lines becoming a dotted line. This one is rarer and is easy to fix (somewhat). I simply rotate the object by a super small portion that no one would notice.
Thanks for any help.Most likely some color separation or transparency flattening thing. Could also be the order of your groups/ shapes. Just hard to tell. For testing, I would save a PDF and do a preflight check in Acrobat or other such tool. This usually reveals any problematic stuff...
Mylenium -
Duplicate font in PDF causes prepress RIP failure
I've scanned various forums trying to get a handle on this problem but nothing seems to get at this issue.
A book that we've built with InDesign generates pdfs that show a duplicate MyriadPro-Light font embedded in the document. The second iteration of the font has a different icon and is listed with as Type 1(CID) with Encoding: Identity-H. The Acrobat Pro PDF/X-1a preflight doesn't flag any issues with the file, but when I sent the file to prepress their RIP flagged the MyriadPro-Light font as having inadequate permissions. They were unable to substitute a font or bypass the error. What's more, they were unable to print from the packaged source files I provided - getting the same error. They had to brute-force open individual pdf pages in Illustrator, convert to outlines, generate an eps and place 170 eps pages in Quark to get a file that would RIP.
Here's an image link that shows the two MyriadPro-Light font entries with the balky one highlighted.
http://home.comcast.net/~bjnicholls/fileaccess/EmbeddedFontsAcrobatPro.jpg
I've looked for duplicate MyriadPro installations in my XP SP2 system fonts folder and in the common files/adobe/fonts folder. There were duplicates for several MyriadPro fonts, but only the Light variant is acting up. From what I've gleaned, the Indentity-H suggests the font is a screen font or something along those lines.
I moved all the OTF fonts from the common files Adobe fonts folder trying to troubleshoot the problem. I bypassed my FontAgent Pro utility and ensured the MyriadPro OTF fonts were installed in the system fonts folder with no fonts with similar names.
I theorized that pdf and eps graphics placed in the book documents may have a font variant embedded in them, so I went through all the placed vector format files and converted type to outlines. A subsequent pdf export shows the same duplicate font problem.
I'd appreciate help with a strategy to track down the offending font. There are 11 documents assembled into one InDesign book, I'm generating a book pdf from the book dialog window. I've opened each document looking for font error messages and found none. In each document, Myriad Pro Light shows normally in the font pulldown lists and behaves normally.
Some of the document files were worked on via a Mac. As far as I know the same Adobe Opentype fonts were used by that designer. The documents started out in InDesign CS2, but as my collaborator acquired CS3 we've moved the document into the new version.
In addition to diagnostic strategy advice, I'd appreciate information or links to explain Adobe's application font strategy (dedicated font folders in both the common program files folder and so-called "private" font folders associated in the application folder tree). I've seen many threads where this fragmentation of installed fonts causes confusion and I'd like to understand what Adobe's intent is with this separate font management system.
I suppose I should ask this in the Acrobat forum, but I don't understand why this font issue isn't flagged in Acrobat preflight checking.
Thanks for any light you can shed on these questions.Therer is absolutely nothing wrong with the scenario of a PDF file having one font subset as regular Type 1 and another as a double byte CID encoded. That is all perfectly kosher per the PDF specification. As such, no PDF/X preflight or any other rational preflight profile will flag this as an error since it is not an error!
I suspect that the "problem" is not that there are two subsets of a particular font, one as a regular Type 1 font and the other as a CID-encoded font, but rather, that there is a problem with the RIP itself not being able to properly deal with CID-encoded fonts. The fact is that CID-encoding has been part of the PostScript language specification for well over 10 years (standard in PostScript 3 and most PostScript Level 2 printers can handle these fonts - even my 12 year old LaserJet 5M can handle them!) and the general PDF specification since Acrobat 4 / PDF 1.3 in 1999 (although Acrobat 3 did support them for CJK Asian fonts).
Note that the scenario you offer occurs not only with InDesign, but with Illustrator, Photoshop, and Acrobat Distiller. All of them can yield PDF files that would be a problem for your printer's RIP.
Looks like your printer needs to update their software to some reasonable level.
- Dov
Maybe you are looking for
-
Is it possible to horizontally reverse a single character in a text box containing other text?
I have a client that wants every subhead to begin with a backward character throughout the entire book. 21 chapters, roughly 4 - 5 subheadings per chapter - the reversed character will always be an R in the same font. I don't know if there's a style
-
How can I use javascript in a Text Area with HTML editor??
My question is... how can I use javascript in Text Area with HTML editor?? I can use javascript functions that change the content of Text Areas but i can´t if i try in text area with html editor.... I need to limit number of characters in a text area
-
Any news on arch and boxee-beta?
i cant find much on whats going on with boxee-beta and arch. i checked archwiki, but not much there...any updates?
-
Greetings, looking for some assistance and hopefully one of our colleagues can assist. When running the repository wizard, we get the following message during the schema copy process: RM_USER -Table does not have a primary key. Once that message disp
-
[Urgent Issue] Msgstore running out me of my GPRS ...
I use pureview 808. Last week I received the Nokia update. The update installed a new program called msgstore. If the process msgstore is killed, the normal message will not be able to be sent or received. I notice that the msgstore process use my G