SaveAs PDF Problem - WinIOError

1
0
-1

Greetings All,

I have an PB 12.5 Winform application creates a composite datawindow in a datastore; I save it as a PDF file and send it as email.  The application is deployed to a server in \\trip tickets\ and works great when started from my workstation in the PB environment (Windows 7 Pro).  The PDF files are save in c:\trip tickets\ when I run it from my workstation.

But when I try to run it 'on' the deployed server (Windows 2008 Server), I get an exception.

The server is 64-bit and I have installed both gs921w32 and gs921w64.

I am not including the code at the moment because it works fine when I run it on my workstation, but I can post it if germain.

Exception is below.

Thanks for any pointers!!

Paul

PB Trace output file: C:\Trip Tickets\PBTrace.log
---------------------------------
Inner Exception:
Exception Time: 2017-05-26 19:33:02.2779428
Process ID: 11048
AppDomain: send_email.exe Domain ID: 1
 Managed Thread ID: 1
Current Thread State: Running
Method: Void WinIOError(Int32, System.String)
Exception Type: System.IO.FileNotFoundException
Exception Message: System.IO.FileNotFoundException: Could not find file 'C:\Trip Tickets\Flyte Tyme Affiliate Trip Ticket-Confo-1700172413.pdf'.
File name: 'C:\Trip Tickets\Flyte Tyme Affiliate Trip Ticket-Confo-1700172413.pdf'
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)
   at System.Net.Mail.Attachment..ctor(String fileName, String mediaType)
   at c__uf_email_trip_ticket_to_rez.uf_email_trip_ticket_to_rez(PBString errorcode, PBString lskey, PBString confirmation_no) in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\uf_email_trip_ticket_to_rez(SSSS):line 71
   at c__w_main.c__cb_1.clicked() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\w_main.cb_1.clicked:line 13
Exception Source: mscorlib
Exception StackTrace:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)
   at System.Net.Mail.Attachment..ctor(String fileName, String mediaType)
   at c__uf_email_trip_ticket_to_rez.uf_email_trip_ticket_to_rez(PBString errorcode, PBString lskey, PBString confirmation_no) in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\uf_email_trip_ticket_to_rez(SSSS):line 71
   at c__w_main.c__cb_1.clicked() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\w_main.cb_1.clicked:line 13
Exception Call Stack:    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2, Boolean A_3)
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2)
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2)
   at Sybase.PowerBuilder.PBLogger.LogExceptionOnly(Exception e, LogLevel logLevel)
   at Sybase.PowerBuilder.PBError.SetError(Exception e)
   at Sybase.PowerBuilder.PBApplication.TriggerSystemError(Exception e)
   at Sybase.PowerBuilder.Win.PBSession.TriggerSystemError(Exception e)
   at Sybase.PowerBuilder.UnexpectedExceptionHandler.OnThreadException(Object sender, ThreadExceptionEventArgs args)
   at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception t)
   at System.Windows.Forms.Control.WndProcException(Exception e)
   at System.Windows.Forms.Control.ControlNativeWindow.OnThreadException(Exception e)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run()
   at Sybase.PowerBuilder.Win.PBSession.RunWinForm()
   at PBApplicationEntryPoint.Main() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\PBApplicationEntryPoint.cs:line 15

Main Exception:
Exception Time: 2017-05-26 19:33:02.6061896
Process ID: 11048
AppDomain: send_email.exe Domain ID: 1
 Managed Thread ID: 1
Current Thread State: Running
Method: System.Object InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
Exception Type: System.Reflection.TargetInvocationException
Exception Message: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not find file 'C:\Trip Tickets\Flyte Tyme Affiliate Trip Ticket-Confo-1700172413.pdf'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)
   at System.Net.Mail.Attachment..ctor(String fileName, String mediaType)
   at c__uf_email_trip_ticket_to_rez.uf_email_trip_ticket_to_rez(PBString errorcode, PBString lskey, PBString confirmation_no) in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\uf_email_trip_ticket_to_rez(SSSS):line 71
   at c__w_main.c__cb_1.clicked() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\w_main.cb_1.clicked:line 13
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Delegate.DynamicInvokeImpl(Object[] args)
   at System.Delegate.DynamicInvoke(Object[] args)
   at Sybase.PowerBuilder.PBSessionBase.ExecuteEvent(Delegate method, Object[] args)
   at Sybase.PowerBuilder.Win.PBCommandButton.OnClick(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at Sybase.PowerBuilder.Win.WinButton.OnMouseUp(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at Sybase.PowerBuilder.Win.WinButton.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Exception Source: mscorlib
Exception StackTrace:    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Delegate.DynamicInvokeImpl(Object[] args)
   at System.Delegate.DynamicInvoke(Object[] args)
   at Sybase.PowerBuilder.PBSessionBase.ExecuteEvent(Delegate method, Object[] args)
   at Sybase.PowerBuilder.Win.PBCommandButton.OnClick(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at Sybase.PowerBuilder.Win.WinButton.OnMouseUp(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at Sybase.PowerBuilder.Win.WinButton.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Exception Call Stack:    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2, Boolean A_3)
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2)
   at Sybase.PowerBuilder.PBLogger.LogExceptionOnly(Exception e, LogLevel logLevel)
   at Sybase.PowerBuilder.PBError.SetError(Exception e)
   at Sybase.PowerBuilder.PBApplication.TriggerSystemError(Exception e)
   at Sybase.PowerBuilder.Win.PBSession.TriggerSystemError(Exception e)
   at Sybase.PowerBuilder.UnexpectedExceptionHandler.OnThreadException(Object sender, ThreadExceptionEventArgs args)
   at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception t)
   at System.Windows.Forms.Control.WndProcException(Exception e)
   at System.Windows.Forms.Control.ControlNativeWindow.OnThreadException(Exception e)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run()
   at Sybase.PowerBuilder.Win.PBSession.RunWinForm()
   at PBApplicationEntryPoint.Main() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\PBApplicationEntryPoint.cs:line 15
-------------------------------------------------------------------------------

Main Exception:
Exception Time: 2017-05-26 19:33:02.7156052
Process ID: 11048
AppDomain: send_email.exe Domain ID: 1
 Managed Thread ID: 1
Current Thread State: Running
Method: Void WinIOError(Int32, System.String)
Exception Type: System.IO.FileNotFoundException
Exception Message: System.IO.FileNotFoundException: Could not find file 'C:\Trip Tickets\Flyte Tyme Affiliate Trip Ticket-Confo-1700172413.pdf'.
File name: 'C:\Trip Tickets\Flyte Tyme Affiliate Trip Ticket-Confo-1700172413.pdf'
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)
   at System.Net.Mail.Attachment..ctor(String fileName, String mediaType)
   at c__uf_email_trip_ticket_to_rez.uf_email_trip_ticket_to_rez(PBString errorcode, PBString lskey, PBString confirmation_no) in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\uf_email_trip_ticket_to_rez(SSSS):line 71
   at c__w_main.c__cb_1.clicked() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\w_main.cb_1.clicked:line 13
Exception Source: mscorlib
Exception StackTrace:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)
   at System.Net.Mail.Attachment..ctor(String fileName, String mediaType)
   at c__uf_email_trip_ticket_to_rez.uf_email_trip_ticket_to_rez(PBString errorcode, PBString lskey, PBString confirmation_no) in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\uf_email_trip_ticket_to_rez(SSSS):line 71
   at c__w_main.c__cb_1.clicked() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\w_main.cb_1.clicked:line 13
Exception Call Stack:    at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2, Boolean A_3)
   at Sybase.PowerBuilder.PBLogger.a(Exception A_0, LogLevel A_1, Boolean A_2)
   at Sybase.PowerBuilder.PBLogger.LogExceptionOnly(Exception e, LogLevel logLevel)
   at Sybase.PowerBuilder.PBError.SetError(Exception e)
   at Sybase.PowerBuilder.PBError.SetError(Exception e)
   at Sybase.PowerBuilder.PBApplication.TriggerSystemError(Exception e)
   at Sybase.PowerBuilder.Win.PBSession.TriggerSystemError(Exception e)
   at Sybase.PowerBuilder.UnexpectedExceptionHandler.OnThreadException(Object sender, ThreadExceptionEventArgs args)
   at System.Windows.Forms.Application.ThreadContext.OnThreadException(Exception t)
   at System.Windows.Forms.Control.WndProcException(Exception e)
   at System.Windows.Forms.Control.ControlNativeWindow.OnThreadException(Exception e)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run()
   at Sybase.PowerBuilder.Win.PBSession.RunWinForm()
   at PBApplicationEntryPoint.Main() in c:\!2017\!Applications\Test PB Send PDF Email Attachment\send_email.pbt_build\PBApplicationEntryPoint.cs:line 15
-------------------------------------------------------------------------------

 

Question Tags: 

Answers

Chris Pollach answered SaveAs PDF Problem - WinIOError

1
0
-1

Hi Paul;

  From the log, it looks like the PDF file is not present when the your App wants to send the email and gets an I/O error. Do you use a FIleExists() command to check for the presence of the PDF file?

  As far as the PDF generation is concerned I have had no issues on W2008, 2012 or 2016 server. However, I an using PB Classic native Apps and not Winform. Just to make sure that the W2008 server is properly configured, I would suggest creating a simple create PDF App .EXE in PB Classic and make sure that PDF generation via GhostScript is working OK first. Remember that you would only use the 64-bit version of GS on W2008 and also ensure that the Sybase DataWindow PS printer is created from the GS installation .INF and not PB's.

 Just something to ponder ... the Winform App feature is now EOL after PB 12.6.

Regards ... Chris

Appeon: Director, Developer Relations

Paul Murray's picture

Thanks Chris,

It has been so long since I did this that I forgot about 'Sybase DataWindow PS'.  I created one manually using ghostpdf.inf.  Works fine now.

Thanks very much!!

Paul