private void button1_Click(object sender, EventArgs e) { ShapeRange OrigSelection = app.ActiveSelectionRange; ExportFilter expflt; StructExportOptions expopt = app.CreateStructExportOptions(); expopt.UseColorProfile = false; expopt.ResolutionX = 72; expopt.ResolutionY = 72; expopt.ImageType = cdrImageType.cdrCMYKColorImage; StructPaletteOptions exppopt = app.CreateStructPaletteOptions(); expflt = app.ActiveDocument.ExportEx("C:\\PStoCurve.eps", cdrFilter.cdrEPS, cdrExportRange.cdrSelection, expopt, exppopt); expflt.Finish(); ImportFilter impflt; StructImportOptions impopt = app.CreateStructImportOptions(); impopt.MaintainLayers = true; impflt = app.ActiveLayer.ImportEx("C:\\PStoCurve.eps", cdrFilter.cdrPSInterpreted, impopt); impflt.Finish(); OrigSelection.Delete(); }
private void CopyToClipboard(bool bCopyAI = true, bool bCopyPDF = true, bool bCopyEPS = true) { if (application.ActiveDocument == null || application.ActiveShape == null) { MessageBox.Show("没有选定对象"); return; } String sTempFileAI = null; String sTempFilePDF = null; String sTempFileEPS = null; uint nClipFmtAI = 0, nClipFmtPDF = 0, nClipFmtEPS = 0; ExportFilter ef; StructExportOptions seo = application.CreateStructExportOptions(); if (bCopyAI) { nClipFmtAI = RegisterClipboardFormat(AIClipFormat); sTempFileAI = GetTempFile("ai"); ef = application.ActiveDocument.ExportEx(sTempFileAI, cdrFilter.cdrAI, cdrExportRange.cdrSelection); ef.ShowDialog(); ef.Finish(); } if (bCopyPDF) { nClipFmtPDF = RegisterClipboardFormat(PDFClipFormat); sTempFilePDF = GetTempFile("pdf"); ef = application.ActiveDocument.ExportEx(sTempFilePDF, cdrFilter.cdrPDF, cdrExportRange.cdrSelection); ef.Finish(); } if (bCopyEPS) { nClipFmtEPS = RegisterClipboardFormat(EPSClipFormat); sTempFileEPS = GetTempFile("eps"); ef = application.ActiveDocument.ExportEx(sTempFileEPS, cdrFilter.cdrEPS, cdrExportRange.cdrSelection); ef.Finish(); } if (bCopyAI || bCopyPDF || bCopyEPS) { if (OpenClipboard((IntPtr)application.AppWindow.Handle)) { if (EmptyClipboard()) { //Clipboard.Clear(); if (bCopyAI) { IntPtr hMem = LoadFile(sTempFileAI); SetClipboardData(nClipFmtAI, hMem); } if (bCopyPDF) { IntPtr hMem = LoadFile(sTempFilePDF); SetClipboardData(nClipFmtPDF, hMem); } if (bCopyEPS) { IntPtr hMem = LoadFile(sTempFileEPS); SetClipboardData(nClipFmtEPS, hMem); } } CloseClipboard(); } if (sTempFileAI != null) { File.Delete(sTempFileAI); } if (sTempFilePDF != null) { File.Delete(sTempFilePDF); } if (sTempFileEPS != null) { File.Delete(sTempFileEPS); } } }
private void ExportJPG(Page page) { if (page.Shapes.Count == 0) { return; } String namen; if (rbDocument.Checked) { namen = app.ActiveDocument.Name; } else { namen = outFileName; } String DestDir, FileName; ExportFilter ef; StructExportOptions seo = new StructExportOptions(); seo.AntiAliasingType = cbSmooth.Checked ? cdrAntiAliasingType.cdrNormalAntiAliasing : cdrAntiAliasingType.cdrNoAntiAliasing; seo.ImageType = (cdrImageType)cbCM.SelectedIndex; seo.Compression = (cdrCompressionType)cbYSSF.SelectedIndex; seo.UseColorProfile = cbUseColorProfile.Checked; int s = 72; if (cboFbl.Text != "") { int.TryParse(cboFbl.Text, out s); } seo.ResolutionX = s; seo.ResolutionY = s; DestDir = tbPath.Text; if (!DestDir.EndsWith("\\")) { DestDir += "\\"; } if (rbSelection.Checked) { FileName = DestDir + namen + getPageName(page) + getIndex() + getUnit(0, 0) + ".jpg"; page.Activate(); ef = app.ActiveDocument.ExportEx(FileName, cdrFilter.cdrJPEG, cdrExportRange.cdrSelection, seo); ef.Finish(); } else if (cbPageScope.Checked) { Rect rct = new Rect(); if (cbPageHalf.Checked) { bool hz = cbHalfOp.SelectedIndex == 0 ? true : false; rct.x = page.LeftX; rct.y = page.BottomY; if (hz) { rct.Width = page.SizeWidth; rct.Height = page.SizeHeight / 2; rct.y = page.SizeHeight / 2; } else { rct.Width = page.SizeWidth / 2; rct.Height = page.SizeHeight; } seo.set_ExportArea(rct); FileName = DestDir + namen + getPageName(page) + "-1前" + getIndex() + getUnit(0, 0) + ".jpg"; page.Activate(); ef = app.ActiveDocument.ExportEx(FileName, cdrFilter.cdrJPEG, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); if (hz) { rct.y = page.BottomY; } else { rct.x = page.SizeWidth / 2; } seo.set_ExportArea(rct); FileName = DestDir + tbName.Text + getPageName(page) + "-2后" + getIndex() + getUnit(0, 0) + ".jpg"; page.Activate(); ef = app.ActiveDocument.ExportEx(FileName, cdrFilter.cdrJPEG, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); return; } else { rct.x = page.LeftX; rct.y = page.BottomY; rct.Width = page.SizeWidth; rct.Height = page.SizeHeight; seo.set_ExportArea(rct); //MessageBox.Show("x:" + rct.x + ",y:" + rct.y + ",width:" + rct.Width + ",height" + rct.Height); } } FileName = DestDir + tbName.Text + getPageName(page) + getIndex() + getUnit(0, 0) + ".jpg"; page.Activate(); ef = app.ActiveDocument.ExportEx(FileName, cdrFilter.cdrJPEG, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); }
private bool ExportImage(Document d, XmlNode preset, string filePath, cdrFilter filter, cdrExportRange range, StructExportOptions opt) { try { Corel.Interop.VGCore.ICorelExportFilter exp; exp = d.ExportEx(filePath, filter, range, opt); object[] param = new Object[1]; if (preset.Attributes["format"].Value == "Jpeg") { param[0] = ValToBool(preset.Attributes["progressive"].Value); exp.GetType().InvokeMember("Progressive", BindingFlags.SetProperty, null, exp, param); param[0] = ValToBool(preset.Attributes["optimize"].Value); exp.GetType().InvokeMember("Optimized", BindingFlags.SetProperty, null, exp, param); if (preset.Attributes["subformat"].Value == "Standard (4:2:2)") { param[0] = 0; } else { param[0] = 1; } exp.GetType().InvokeMember("SubFormat", BindingFlags.SetProperty, null, exp, param); param[0] = 100 - Convert.ToInt32(preset.Attributes["quality"].Value); exp.GetType().InvokeMember("Compression", BindingFlags.SetProperty, null, exp, param); param[0] = Convert.ToInt32(preset.Attributes["blur"].Value); exp.GetType().InvokeMember("Smoothing", BindingFlags.SetProperty, null, exp, param); } else { param[0] = ValToBool(preset.Attributes["interlaced"].Value); exp.GetType().InvokeMember("Interlaced", BindingFlags.SetProperty, null, exp, param); } exp.Finish(); return(true); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return(false); } }
private void BtnContextDo(object sender, RoutedEventArgs e) { try { if (dApp.Documents.Count == 0) { return; } var mi = (MenuItem)sender; var pid = mi.Tag.ToString(); var xDoc = new XmlDocument(); xDoc.Load(sPath); var root = xDoc.ChildNodes[1]; var preset = xDoc.SelectSingleNode("//Preset[@pid = \"" + pid + "\"]"); if (preset != null) { var d = dApp.ActiveDocument; string filePath = ""; if (root.Attributes["folder"] != null) { filePath = root.Attributes["folder"].Value + @"\"; } else { filePath = d.FilePath; if (filePath == "") { filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\"; } } filePath += d.Name; cdrFilter filter; string ext; var opt = new StructExportOptions(); var aat = cdrAntiAliasingType.cdrNoAntiAliasing; if (preset.Attributes["antialiased"].Value == "1") { aat = cdrAntiAliasingType.cdrNormalAntiAliasing; } var imgType = cdrImageType.cdrRGBColorImage; switch (preset.Attributes["colormode"].Value) { case "CMYK Color": imgType = cdrImageType.cdrCMYKColorImage; break; case "Grayscale": imgType = cdrImageType.cdrGrayscaleImage; break; } opt.Overwrite = true; opt.AntiAliasingType = aat; opt.ImageType = imgType; opt.MaintainAspect = true; opt.UseColorProfile = true; opt.ResolutionX = Convert.ToInt32(preset.Attributes["resolution"].Value); opt.ResolutionY = Convert.ToInt32(preset.Attributes["resolution"].Value); opt.Transparent = false; var format = preset.Attributes["format"].Value; if (format == "Jpeg") { filter = cdrFilter.cdrJPEG; ext = ".jpg"; opt.Compression = cdrCompressionType.cdrCompressionJPEG; } else { filter = cdrFilter.cdrPNG; ext = ".png"; if (preset.Attributes["transparency"].Value == "1") { opt.Transparent = true; } } switch (preset.Attributes["range"].Value) { case "Selection": if (dApp.ActiveSelectionRange.Count == 0) { MessageBox.Show("No selection"); return; } ExportImage(d, preset, filePath + ext, filter, cdrExportRange.cdrSelection, opt); break; case "Active page": if (dApp.ActivePage.Shapes.Count == 0) { MessageBox.Show("No shapes"); return; } ExportImage(d, preset, filePath + @"_" + d.ActivePage.Index.ToString(CultureInfo.InvariantCulture) + ext, filter, cdrExportRange.cdrCurrentPage, opt); break; case "All pages": foreach (Page p in d.Pages) { p.Activate(); ExportImage(d, preset, filePath + @"_" + p.Index.ToString(CultureInfo.InvariantCulture) + ext, filter, cdrExportRange.cdrCurrentPage, opt); } break; } return; } MessageBox.Show("Preset not found"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void ExportJPG(Page page) { if (page.Shapes.Count == 0) { addMessage("页面无对象"); return; } page.Activate(); String namen; if (rbDocument.Checked) { namen = application.ActiveDocument.Name; } else { namen = outFileName; } application.ActiveDocument.Unit = cdrUnit.cdrPixel; cdrFilter filter = getFilter(); String ext = getExt(); String DestDir, FileName; ExportFilter ef; StructExportOptions seo = application.CreateStructExportOptions(); seo.AntiAliasingType = cbSmooth.Checked ? cdrAntiAliasingType.cdrSupersampling : cdrAntiAliasingType.cdrNoAntiAliasing; seo.ImageType = (cdrImageType)cbCM.SelectedIndex; seo.Compression = (cdrCompressionType)cbYSSF.SelectedIndex; seo.UseColorProfile = cbUseColorProfile.Checked; //特别注意,透明度在jpg等无透明的格式的时候不能为True,不然光滑处理将会失效 seo.Transparent = checkBox_trans.Checked; seo.AlwaysOverprintBlack = checkBox_OverPrintBlack.Checked; seo.MaintainLayers = checkBox_MaintainLayers.Checked; int s = 72; if (cboFbl.Text != "") { int.TryParse(cboFbl.Text, out s); } seo.ResolutionX = s; seo.ResolutionY = s; double sc = 1; if (comboBox_SC.Text != "") { double.TryParse(comboBox_SC.Text, out sc); } if (sc == 0) { addMessage("放大部数不能为0,取消。。"); return; } if (sc != 1) { double[] dt = getSize(page); seo.SizeX = (int)(dt[0] * sc * (s / 300.0)); seo.SizeY = (int)(dt[1] * sc * (s / 300.0)); } DestDir = tbPath.Text; if (!DestDir.EndsWith("\\")) { DestDir += "\\"; } if (rbSelection.Checked) { FileName = DestDir + namen + getPageName(page) + getIndex() + getUnit(0, 0) + ext; if (CheckFilExists(FileName)) { addMessage("文件已存在,取消"); return; } page.Activate(); ef = application.ActiveDocument.ExportEx(FileName, filter, cdrExportRange.cdrSelection, seo); ef.Finish(); return; } else if (rbSelRge.Checked) { Rect rct = application.CreateRect(); ShapeRange sr = application.ActiveSelectionRange; rct.x = sr.LeftX; rct.y = sr.BottomY; rct.Width = sr.SizeWidth; rct.Height = sr.SizeHeight; seo.set_ExportArea(ref rct); FileName = DestDir + namen + getPageName(page) + getIndex() + getUnit(0, 0) + ext; if (CheckFilExists(FileName)) { addMessage("文件已存在,取消"); return; } page.Activate(); ef = application.ActiveDocument.ExportEx(FileName, filter, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); return; } else if (cbPageScope.Checked) { Rect rct = application.CreateRect(); if (cbPageHalf.Checked) { bool hz = cbHalfOp.SelectedIndex == 0 ? true : false; rct.x = page.LeftX; rct.y = page.BottomY; if (hz) { rct.Width = page.SizeWidth; rct.Height = page.SizeHeight / 2; rct.y = page.SizeHeight / 2; } else { rct.Width = page.SizeWidth / 2; rct.Height = page.SizeHeight; } seo.set_ExportArea(rct); FileName = DestDir + namen + getPageName(page) + "-1前" + getIndex() + getUnit(0, 0) + ext; if (CheckFilExists(FileName)) { addMessage("文件已存在,取消"); return; } ef = application.ActiveDocument.ExportEx(FileName, filter, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); if (hz) { rct.y = page.BottomY; } else { rct.x = page.SizeWidth / 2; } seo.set_ExportArea(rct); FileName = DestDir + namen + getPageName(page) + "-2后" + getIndex() + getUnit(0, 0) + ext; if (CheckFilExists(FileName)) { addMessage("文件已存在,取消"); return; } ef = application.ActiveDocument.ExportEx(FileName, filter, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); return; } else { rct = application.CreateRect(page.LeftX, page.BottomY, page.SizeWidth, page.SizeHeight); //rct.x = page.LeftX; //rct.y = page.BottomY; //rct.Width = page.SizeWidth; //rct.Height = page.SizeHeight; seo.set_ExportArea(rct); //MessageBox.Show("x:" + rct.x + ",y:" + rct.y + ",width:" + rct.Width + ",height" + rct.Height); } } FileName = DestDir + namen + getPageName(page) + getIndex() + getUnit(0, 0) + ext; if (CheckFilExists(FileName)) { addMessage("文件已存在,取消"); return; } ef = application.ActiveDocument.ExportEx(FileName, filter, cdrExportRange.cdrCurrentPage, seo); ef.Finish(); }
private bool ExportImage(Document d, XmlNode preset, string filePath, cdrFilter filter, cdrExportRange range, StructExportOptions opt) { try { Corel.Interop.VGCore.ICorelExportFilter exp; exp = d.ExportEx(filePath, filter, range, opt); object[] param = new Object[1]; if (preset.Attributes["format"].Value == "Jpeg") { param[0] = ValToBool(preset.Attributes["progressive"].Value); exp.GetType().InvokeMember("Progressive", BindingFlags.SetProperty, null, exp, param); param[0] = ValToBool(preset.Attributes["optimize"].Value); exp.GetType().InvokeMember("Optimized", BindingFlags.SetProperty, null, exp, param); if (preset.Attributes["subformat"].Value == "Standard (4:2:2)") param[0] = 0; else param[0] = 1; exp.GetType().InvokeMember("SubFormat", BindingFlags.SetProperty, null, exp, param); param[0] = 100 - Convert.ToInt32(preset.Attributes["quality"].Value); exp.GetType().InvokeMember("Compression", BindingFlags.SetProperty, null, exp, param); param[0] = Convert.ToInt32(preset.Attributes["blur"].Value); exp.GetType().InvokeMember("Smoothing", BindingFlags.SetProperty, null, exp, param); } else { param[0] = ValToBool(preset.Attributes["interlaced"].Value); exp.GetType().InvokeMember("Interlaced", BindingFlags.SetProperty, null, exp, param); } exp.Finish(); return true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); return false; } }
private void BtnContextDo(object sender, RoutedEventArgs e) { try { if (dApp.Documents.Count == 0) return; var mi = (MenuItem) sender; var pid = mi.Tag.ToString(); var xDoc = new XmlDocument(); xDoc.Load(sPath); var root = xDoc.ChildNodes[1]; var preset = xDoc.SelectSingleNode("//Preset[@pid = \"" + pid + "\"]"); if (preset != null) { var d = dApp.ActiveDocument; string filePath = ""; if (root.Attributes["folder"] != null) filePath = root.Attributes["folder"].Value + @"\"; else { filePath = d.FilePath; if (filePath == "") filePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\"; } filePath += d.Name; cdrFilter filter; string ext; var opt = new StructExportOptions(); var aat = cdrAntiAliasingType.cdrNoAntiAliasing; if (preset.Attributes["antialiased"].Value == "1") aat = cdrAntiAliasingType.cdrNormalAntiAliasing; var imgType = cdrImageType.cdrRGBColorImage; switch (preset.Attributes["colormode"].Value) { case "CMYK Color": imgType = cdrImageType.cdrCMYKColorImage; break; case "Grayscale": imgType = cdrImageType.cdrGrayscaleImage; break; } opt.Overwrite = true; opt.AntiAliasingType = aat; opt.ImageType = imgType; opt.MaintainAspect = true; opt.UseColorProfile = true; opt.ResolutionX = Convert.ToInt32(preset.Attributes["resolution"].Value); opt.ResolutionY = Convert.ToInt32(preset.Attributes["resolution"].Value); opt.Transparent = false; var format = preset.Attributes["format"].Value; if (format == "Jpeg") { filter = cdrFilter.cdrJPEG; ext = ".jpg"; opt.Compression = cdrCompressionType.cdrCompressionJPEG; } else { filter = cdrFilter.cdrPNG; ext = ".png"; if (preset.Attributes["transparency"].Value == "1") opt.Transparent = true; } switch (preset.Attributes["range"].Value) { case "Selection": if (dApp.ActiveSelectionRange.Count == 0) { MessageBox.Show("No selection"); return; } ExportImage(d, preset, filePath + ext, filter, cdrExportRange.cdrSelection, opt); break; case "Active page": if (dApp.ActivePage.Shapes.Count == 0) { MessageBox.Show("No shapes"); return; } ExportImage(d, preset, filePath + @"_" + d.ActivePage.Index.ToString(CultureInfo.InvariantCulture) + ext, filter, cdrExportRange.cdrCurrentPage, opt); break; case "All pages": foreach (Page p in d.Pages) { p.Activate(); ExportImage(d, preset, filePath + @"_" + p.Index.ToString(CultureInfo.InvariantCulture) + ext, filter, cdrExportRange.cdrCurrentPage, opt); } break; } return; } MessageBox.Show("Preset not found"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }