📄 ncore.cs
字号:
catch (Exception e)
{
ErrorHalt(e.ToString());
return 1;
}
return 0;
}
/// <summary>
/// Save Dialogfeld, checkt gleichzeitig ob eine Source Datei angegeben wurde.
/// Und erzeugt die KonversionID.
/// </summary>
/// <returns>0 wenn alees in ordnung ist, 1 bei einem Fehler</returns>
public static int DestinationFile()
{
SaveFileDialog SFD = new SaveFileDialog();
//SFD.Filter = "Text Datei (*.txt)|*.txt";
//SFD.Filter = SFD.Filter + "|Rich Text Format (*.rtf)|*.rtf";
//SFD.Filter = SFD.Filter + "|Word Dokument (*.doc)|*.doc";
//SFD.Filter = SFD.Filter + "|HyperText Markup Language Datein(*.htm)|*.htm";
//SFD.Filter = SFD.Filter + "|PowerPoint Datein(*.ppt)|*.ppt";
SFD.Filter = /*SFD.Filter +*/ "Portables Dokumenten Format(*.pdf)|*.pdf";
//SFD.Filter = SFD.Filter + "|Windows Meta File Datein(*.wmf)|*.wmf";
//SFD.Filter = SFD.Filter + "|Erweiterte Meta File Datein(*.emf)|*.emf";
//SFD.Filter = SFD.Filter + "|Windows Bitmap(*.bmp)|*.bmp";
//SFD.Filter = SFD.Filter + "|Exchangeable Image File Format(*.exif)|*.exif";
//SFD.Filter = SFD.Filter + "|Windows Icon(*.ico)|*.ico";
//SFD.Filter = SFD.Filter + "|Joint Photographic Experts Group(*.jpg)|*.jpg";
//SFD.Filter = SFD.Filter + "|Portable Network Graphics(*.png)|*.png";
//SFD.Filter = SFD.Filter + "|Tagged Image File Format(*.tif)|*.tif";
//SFD.Filter = SFD.Filter + "|Microsoft Exel Datei(*.xls)|*.xls";
//SFD.Filter = SFD.Filter + "|Lotus 123 Datei(*.wk1,*.wk3,*.wk4)|*.wk*";
//SFD.Filter = SFD.Filter + "|Windows Write Datei(*.wri)|*.wri";
//SFD.Filter = SFD.Filter + "|Microsoft Works Datei(*.wps,*.wpt)|*.wp*";
SFD.InitialDirectory = WorkDir;
SFD.DefaultExt = "txt";
if (SFD.ShowDialog() == DialogResult.OK)
{
if (scrfile==null) {SFD.Dispose();return 1;}
dstfile = SFD.FileName;
if (CreateCnvID()!=0) {SFD.Dispose();return 1;}
SFD.Dispose();
return 0;
}
else
{
SFD.Dispose();
return 1;}
}
/// <summary>
/// Inizialisiert die Variablen (wie z.B. WorkDir) und checkt ob eine Office installiert ist.
/// Ruft ErrorHalt auf wenn ein Fehler auftritt.
/// </summary>
public nCore()
{
try
{
Word.Application appW = new Word.Application();
appW.Visible = false;
appW.Quit(ref Unknown,ref Unknown,ref Unknown);
PowerPoint.Application appP = new PowerPoint.Application();
appP.Quit();
}
catch (Exception err)
{
ErrorHalt(err.ToString()+"\nOffice nicht richtig Installiert,\nterminiere Programm.");
}
WorkDir = System.Environment.CurrentDirectory;
//CreateCnvID();//debug!
}
/// <summary>
/// Führt die Konvertierung ohne User-Eingaben im silent mode aus.
/// </summary>
/// <param name="input">Source Datei</param>
/// <param name="output">Target Datei</param>
public nCore(string input,string output)
{
silent = true;
// SID Marina, hier Session id zuweissen
string SID = "UIJUZTREDSXCVBNM";
WorkDir = System.Environment.CurrentDirectory;
// Copy database
Directory.CreateDirectory(Environment.GetEnvironmentVariable("TEMP")+"\\"+SID);
File.Copy(WorkDir + "\\" + Database,Environment.GetEnvironmentVariable("TEMP")+"\\"+SID+"\\"+Database,true);
WorkDir = Environment.GetEnvironmentVariable("TEMP")+"\\"+SID;
scrfile = input;
dstfile = output;
CreateCnvID();
DoCnv();
Directory.Delete(Environment.GetEnvironmentVariable("TEMP")+"\\"+SID,true);
}
/// <summary>
/// Checkt ob eine Konvertierung möglich ist
/// </summary>
/// <param name="from">id ders Source Dateityps</param>
/// <param name="to"> id des Ziel Dateityps</param>
/// <returns></returns>
public static bool CheckCnv(int from,int to)
{
from = from << 8;
from = from | to; //id ist in from
if (DoCnv(true)==0) return true; else return false;
}
/// <summary>
/// Procedur die von der KonversionID ausgehend die passende Procedur aufruft.
/// </summary>
/// <returns>1 wenn ein Fehler aufgetreten ist.</returns>
public static int DoCnv()
{
return DoCnv(false);
}
/// <summary>
///
/// </summary>
/// <param name="check"></param>
/// <returns></returns>
public static int DoCnv(bool check)
{
switch (CnvID)
{
case RTF2PDF: if (!check)DoRTF2ALL(ExportFormatType.PortableDocFormat);break;
case DOC2PDF: if (!check) DoHTM2PDF();break;
default : return 1;
}
return 0;
}
/// <summary>
///
/// </summary>
private static void DoHTM2PDF()
{
object Unknown =Type.Missing;
Word.Application newApp = new Word.Application();
newApp.Visible = false;
object Source=scrfile;
object Target=WorkDir + "\\temp2.rtf";
scrfile=WorkDir + "\\temp2.rtf"; //You know the trick....
newApp.Documents.Open(ref Source,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,ref Unknown);
object format = Word.WdSaveFormat.wdFormatRTF;// kein XML, nutzen?
newApp.ActiveDocument.SaveAs(ref Target,ref format,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown);
newApp.Quit(ref Unknown,ref Unknown,ref Unknown);
DoRTF2ALL(ExportFormatType.PortableDocFormat);
File.Delete(WorkDir + "\\temp2.rtf");
}
//der Weg, also rtf aufteilen teile in word in html
// umwandeln, word signatur löschen, in powerpoint in
// emf umwandeln, in Access DB rein, als pdf ausgeben.
private static void DoRTF2ALL(CrystalDecisions.Shared.ExportFormatType outTp)
{
int lastsplit = 0;
int nextsplit = 0;
int pageheight= 650; //"Länge" unserer Seite
int pcount= 1;
Point xx;
object Unknown =Type.Missing;
Word.Application newApp;
PowerPoint.Application app;
PowerPoint.Presentation ppp;
string[] TempEnt;
RichTextBox rtf = new RichTextBox();
rtf.Height=25000;// nur page size required
rtf.Width=4048;// Solle reichen
//Console.WriteLine(rtf.Bounds.ToString());
rtf.LoadFile(scrfile, RichTextBoxStreamType.RichText);
nCoreHlp.EmptyDB(WorkDir + "\\" + Database);
while ((lastsplit+1)<rtf.Text.Length) ////start page split
{
// die ersten paar seiten wegschneiden
rtf.SelectionStart = 0;
rtf.SelectionLength =lastsplit;
rtf.Cut();
for (int r=0;r<=rtf.Text.Length;r++) ////parse through whole text
{
xx = rtf.GetPositionFromCharIndex(r);
nextsplit = rtf.Text.Length;
if (int.Parse(xx.Y.ToString()) > pageheight){nextsplit=r-1;r=rtf.Text.Length;}
}
lastsplit=lastsplit+nextsplit;// ende wegschneiden
rtf.SelectionStart = nextsplit;
rtf.SelectionLength =rtf.Text.Length-nextsplit;
rtf.Cut();
rtf.SaveFile(WorkDir + "\\temp.rtf", RichTextBoxStreamType.RichText);
///////////////////////////////////////////////////////////7////// insert db
newApp = new Word.Application();
newApp.Visible = false;
object Source=WorkDir + "\\temp.rtf";
object Target=WorkDir + "\\temp.html";
newApp.Documents.Open(ref Source,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,ref Unknown);
object format = Word.WdSaveFormat.wdFormatHTML;// kein XML, nutzen?
newApp.ActiveDocument.SaveAs(ref Target,ref format,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown,ref Unknown,
ref Unknown,ref Unknown);
newApp.Quit(ref Unknown,ref Unknown,ref Unknown);
//kill word head
StreamReader sr;
bool not=true;
while (not)
{
try
{
sr = new StreamReader(WorkDir + "\\temp.html");
not=false;
StreamWriter sw = new StreamWriter(WorkDir + "\\temp.txt");
String line;
while ((line = sr.ReadLine()) != null)
{
if (line.CompareTo("<meta name=ProgId content=Word.Document>")!=0)
sw.WriteLine(line); else
//line.Replace //Marina
sw.WriteLine("<meta name=ProgId content=Word.Documens>");
}
sr.Close();
sw.Flush();
sw.Close();
}
catch (Exception e){e=e;}
}// kill word head end
File.Delete(WorkDir + "\\temp.html");
File.Move(WorkDir + "\\temp.txt", WorkDir + "\\temp.html");
//File.Delete(WorkDir + "\\temp.txt");
app = new PowerPoint.Application();
ppp = app.Presentations.Open(WorkDir + "\\temp.html",
/*Microsoft.Office.Core.MsoTriState.msoCTrue*/0,
/*Microsoft.Office.Core.MsoTriState.msoTrue*/0,
Microsoft.Office.Core.MsoTriState.msoFalse);//visible? immer no
ppp.SaveAs(WorkDir + "\\temp",
PowerPoint.PpSaveAsFileType.ppSaveAsEMF,
Microsoft.Office.Core.MsoTriState.msoFalse);
app.Quit();
//output fangen
TempEnt = Directory.GetFiles(WorkDir + "\\temp\\", "*.emf");
nCoreHlp.InsertDB1(WorkDir + "\\" + Database,TempEnt[0],pcount);
pcount++;
Console.WriteLine("1 Page Converted");// debug
//Console.ReadLine();
//////////////////////////////////////////////////////////////// insert db off
rtf.LoadFile(scrfile, RichTextBoxStreamType.RichText);
}//////////// page split done
///Create PDF
ReportDocument doc = new ReportDocument();
doc.Load(WorkDir + "\\DtoD.rpt");
doc.Database.Tables[0].Location = (WorkDir + "\\DtoD.mdb");
doc.ExportOptions.ExportFormatType = outTp;
doc.ExportOptions.ExportDestinationType =ExportDestinationType.DiskFile;
//DiskFileDestinationOptions
DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions();
diskOpts.DiskFileName = dstfile;
doc.ExportOptions.DestinationOptions = diskOpts;
doc.Export();
doc.Close();
Directory.Delete(WorkDir + "\\temp\\", true);
File.Delete(WorkDir + "\\temp.rtf");
File.Delete(WorkDir + "\\temp.html");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -