Added PDF Generation Code
This commit is contained in:
@@ -2,9 +2,177 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Reflection;
|
||||
using Microsoft.Win32;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LBWordLibrary
|
||||
{
|
||||
public partial class LBApplicationClass : LBComObject
|
||||
{
|
||||
/// <summary>
|
||||
/// This gives the option of specifying Background = false to print in the foreground.
|
||||
/// </summary>
|
||||
/// <param name="Background">boolean BackGround
|
||||
/// If true - document will be printed in the background
|
||||
/// If false - document will be printed in the foreground</param>
|
||||
public void PrintOut(Boolean Background)
|
||||
{
|
||||
InvokeMethod("PrintOut", Background, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
|
||||
}
|
||||
public bool VolianPDFInstalled
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
|
||||
if (printer == "VolianPDF Writer") return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public bool WordPDFExporterInstalled
|
||||
{
|
||||
get
|
||||
{
|
||||
// this is for ExportAsFixedFormat MSOffice AddIn
|
||||
RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"Installer\Components\12B306B24E250DD428FC7016B6FB4BD8");
|
||||
if (key != null)
|
||||
{
|
||||
key.Close();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
private bool CanCreatePDFFile(string pdfFileName)
|
||||
{
|
||||
System.IO.FileInfo file = new System.IO.FileInfo(pdfFileName);
|
||||
if (!file.Exists) return true;
|
||||
try
|
||||
{
|
||||
file.Delete();
|
||||
return true;
|
||||
}
|
||||
catch (System.IO.IOException exio)
|
||||
{
|
||||
if (exio.Message.StartsWith("The process cannot access the file")) return false;
|
||||
throw new Exception(string.Format("Cannot Delete PDF file {0}", pdfFileName), exio);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception(string.Format("Cannot Delete PDF file {0}", pdfFileName), ex);
|
||||
}
|
||||
}
|
||||
private string AvailableFileName(string pdfFileName)
|
||||
{
|
||||
if (CanCreatePDFFile(pdfFileName)) return pdfFileName;
|
||||
string prefix = pdfFileName.Replace(".pdf", "");
|
||||
for (int i = 1; i < 1000; i++)
|
||||
{
|
||||
string newname = string.Format("{0}_{1:000}.PDF", prefix, i);
|
||||
if (CanCreatePDFFile(newname)) return newname;
|
||||
}
|
||||
throw new Exception("Cannot find a name to use");
|
||||
}
|
||||
public string CreatePDF(string pdfFileName, bool openPDF)
|
||||
{
|
||||
pdfFileName = CreatePDF(pdfFileName);
|
||||
if (openPDF) System.Diagnostics.Process.Start(pdfFileName);
|
||||
return pdfFileName;
|
||||
}
|
||||
public string CreatePDF(string pdfFileName)
|
||||
{
|
||||
pdfFileName = AvailableFileName(pdfFileName);
|
||||
if (Convert.ToSingle(Version) >= 12.0F && WordPDFExporterInstalled)
|
||||
return CreatePDF2007(pdfFileName);
|
||||
else if (VolianPDFInstalled)
|
||||
return CreatePDF2003BG(pdfFileName);
|
||||
else
|
||||
throw new Exception("No PDF Writer support installed for MS Word sections");
|
||||
}
|
||||
public string CreatePDF2003FG(string pdfFileName, bool openPDF)
|
||||
{
|
||||
pdfFileName = CreatePDF2003FG(pdfFileName);
|
||||
if (openPDF) System.Diagnostics.Process.Start(pdfFileName);
|
||||
return pdfFileName;
|
||||
}
|
||||
public string CreatePDF2003FG(string pdfFileName)
|
||||
{
|
||||
pdfFileName = AvailableFileName(pdfFileName);
|
||||
if (!VolianPDFInstalled)
|
||||
throw new Exception("VolianPDF Writer is not installed properly");
|
||||
try
|
||||
{
|
||||
string printer = ActivePrinter;
|
||||
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\VolianPDF Writer");
|
||||
key.SetValue("OutputFile", pdfFileName, RegistryValueKind.String);
|
||||
key.SetValue("BypassSaveAs", "1", RegistryValueKind.String);
|
||||
key.Close();
|
||||
ActivePrinter = "VolianPDF Writer";
|
||||
PrintOut(false);
|
||||
ActivePrinter = printer;
|
||||
Registry.CurrentUser.DeleteSubKeyTree(@"Software\VolianPDF Writer");
|
||||
return pdfFileName;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception("Error creating PDF - LBApplicationClass.CreatePDF2003FG", ex);
|
||||
}
|
||||
}
|
||||
public string CreatePDF2003BG(string pdfFileName, bool openPDF)
|
||||
{
|
||||
pdfFileName = CreatePDF2003BG(pdfFileName);
|
||||
if (openPDF) System.Diagnostics.Process.Start(pdfFileName);
|
||||
return pdfFileName;
|
||||
}
|
||||
public string CreatePDF2003BG(string pdfFileName)
|
||||
{
|
||||
pdfFileName = AvailableFileName(pdfFileName);
|
||||
if (!VolianPDFInstalled)
|
||||
throw new Exception("VolianPDF Writer is not installed properly");
|
||||
try
|
||||
{
|
||||
string printer = ActivePrinter;
|
||||
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\VolianPDF Writer");
|
||||
key.SetValue("OutputFile", pdfFileName, RegistryValueKind.String);
|
||||
key.SetValue("BypassSaveAs", "1", RegistryValueKind.String);
|
||||
key.Close();
|
||||
ActivePrinter = "VolianPDF Writer";
|
||||
PrintOut(true);
|
||||
do
|
||||
{
|
||||
// Console.WriteLine("Background Printing Status = {0}", _MyApp.BackgroundPrintingStatus);
|
||||
Application.DoEvents();
|
||||
} while (BackgroundPrintingStatus == 1);
|
||||
ActivePrinter = printer;
|
||||
Registry.CurrentUser.DeleteSubKeyTree(@"Software\VolianPDF Writer");
|
||||
return pdfFileName;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception("Error creating PDF - LBApplicationClass.CreatePDF2003BG", ex);
|
||||
}
|
||||
}
|
||||
public string CreatePDF2007(string pdfFileName, bool openPDF)
|
||||
{
|
||||
pdfFileName = CreatePDF2007(pdfFileName);
|
||||
if (openPDF) System.Diagnostics.Process.Start(pdfFileName);
|
||||
return pdfFileName;
|
||||
}
|
||||
public string CreatePDF2007(string pdfFileName)
|
||||
{
|
||||
pdfFileName = AvailableFileName(pdfFileName);
|
||||
if (!WordPDFExporterInstalled)
|
||||
throw new Exception("MS Word PDF Exporter is not installed");
|
||||
try
|
||||
{
|
||||
ActiveDocument.ExportAsFixedFormat(pdfFileName, LBWdExportFormat.wdExportFormatPDF);
|
||||
return pdfFileName;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception("Error creating PDF - LBApplicationClass.CreatePDF2007", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
public partial class LBDocuments
|
||||
{
|
||||
public LBDocumentClass Open(string fileName, Boolean addToRecentFiles)
|
||||
@@ -34,7 +202,7 @@ namespace LBWordLibrary
|
||||
public void SaveAs(string fileName)
|
||||
{
|
||||
if (fileName.ToUpper().EndsWith("DOC"))
|
||||
SaveAs2(fileName, LBWdSaveFormat.wdFormatDocument, Missing.Value, Missing.Value,false );
|
||||
SaveAs2(fileName, LBWdSaveFormat.wdFormatDocument, Missing.Value, Missing.Value, false);
|
||||
else if (fileName.ToUpper().EndsWith("RTF"))
|
||||
SaveAs2(fileName, LBWdSaveFormat.wdFormatRTF, Missing.Value, Missing.Value, false);
|
||||
else if (fileName.ToUpper().EndsWith("TXT"))
|
||||
@@ -58,7 +226,7 @@ namespace LBWordLibrary
|
||||
public void ReplaceAll()
|
||||
{
|
||||
this.Execute(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
|
||||
Missing.Value, Missing.Value, Missing.Value, Missing.Value, LBWdReplace.wdReplaceAll, Missing.Value,
|
||||
Missing.Value, Missing.Value, Missing.Value, Missing.Value, LBWdReplace.wdReplaceAll, Missing.Value,
|
||||
Missing.Value, Missing.Value, Missing.Value);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user