我应该使用哪个 C# 项目来满足特定要求?
Which C# project should I use for a certain requirement?
我收到利益相关者的请求,希望我们自动执行以下过程。
前往CMS网站(内部申请)
拍照报告。
向利益相关者发送电子邮件并附上报告。
注意:必须每天重复此过程。
而且我不确定选择哪个项目来满足上述需求;目前,我能想到的只有一个控制台应用程序,但我不太确定。
如有任何帮助,我们将不胜感激。
屏幕截图代码 - Selenium C#
public class ScreenShotRepository
{
public static void TakeScreenShot(IWebDriver Driver, string filename, List<string> text = null)
{
var bytesArr = Driver.TakeScreenshot(new VerticalCombineDecorator(new ScreenshotMaker()));
var screenshotImage = (System.Drawing.Image)((new ImageConverter()).ConvertFrom(bytesArr));
WriteToPDF(new List<System.Drawing.Image>() { screenshotImage }, filename, text);
}
public static void WriteToPDF(List<System.Drawing.Image> screenshots, string filename, List<string> text)
{
var fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None);
var document = new Document(new iTextSharp.text.Rectangle(0, 0, screenshots[0].Width, screenshots[0].Height), 0, 0, 0, 0);
var writer = PdfWriter.GetInstance(document, fileStream);
document.Open();
var content = writer.DirectContent;
var font = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
for (int i = 0; i < screenshots.Count; i++)
{
var image = iTextSharp.text.Image.GetInstance(screenshots[i], screenshots[i].RawFormat);
document.Add(image);
WriteText(content, font, text);
if (i + 1 != screenshots.Count)
document.NewPage();
}
document.Close();
writer.Close();
}
public static void WriteText(PdfContentByte content, BaseFont font, List<string> text)
{
content.BeginText();
content.SetColorFill(BaseColor.GREEN);
content.SetFontAndSize(font, 40);
for (int j = 0; j < text.Count; j++)
content.ShowTextAligned(Element.ALIGN_LEFT, text[j].ToString(), 50, 50 + 50 * j, 0);
content.EndText();
}
}
您可以将此设为Windows服务,因为每天都有通话需求。
但是,最简单的方法确实是您使用操作系统任务计划程序计划 运行 的控制台应用程序。
就要求而言,为什么报告系统不能输出 PDF?截取另一个软件的屏幕截图已经是一个真正的权宜之计,如果它是third-party,截取您自己的报告软件的屏幕截图只是说谁编写内部 CMS 系统......如果有要求,则无法完成任务在他们的域外自动化它。
我收到利益相关者的请求,希望我们自动执行以下过程。
前往CMS网站(内部申请)
拍照报告。
向利益相关者发送电子邮件并附上报告。
注意:必须每天重复此过程。
而且我不确定选择哪个项目来满足上述需求;目前,我能想到的只有一个控制台应用程序,但我不太确定。
如有任何帮助,我们将不胜感激。
屏幕截图代码 - Selenium C#
public class ScreenShotRepository
{
public static void TakeScreenShot(IWebDriver Driver, string filename, List<string> text = null)
{
var bytesArr = Driver.TakeScreenshot(new VerticalCombineDecorator(new ScreenshotMaker()));
var screenshotImage = (System.Drawing.Image)((new ImageConverter()).ConvertFrom(bytesArr));
WriteToPDF(new List<System.Drawing.Image>() { screenshotImage }, filename, text);
}
public static void WriteToPDF(List<System.Drawing.Image> screenshots, string filename, List<string> text)
{
var fileStream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None);
var document = new Document(new iTextSharp.text.Rectangle(0, 0, screenshots[0].Width, screenshots[0].Height), 0, 0, 0, 0);
var writer = PdfWriter.GetInstance(document, fileStream);
document.Open();
var content = writer.DirectContent;
var font = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
for (int i = 0; i < screenshots.Count; i++)
{
var image = iTextSharp.text.Image.GetInstance(screenshots[i], screenshots[i].RawFormat);
document.Add(image);
WriteText(content, font, text);
if (i + 1 != screenshots.Count)
document.NewPage();
}
document.Close();
writer.Close();
}
public static void WriteText(PdfContentByte content, BaseFont font, List<string> text)
{
content.BeginText();
content.SetColorFill(BaseColor.GREEN);
content.SetFontAndSize(font, 40);
for (int j = 0; j < text.Count; j++)
content.ShowTextAligned(Element.ALIGN_LEFT, text[j].ToString(), 50, 50 + 50 * j, 0);
content.EndText();
}
}
您可以将此设为Windows服务,因为每天都有通话需求。
但是,最简单的方法确实是您使用操作系统任务计划程序计划 运行 的控制台应用程序。
就要求而言,为什么报告系统不能输出 PDF?截取另一个软件的屏幕截图已经是一个真正的权宜之计,如果它是third-party,截取您自己的报告软件的屏幕截图只是说谁编写内部 CMS 系统......如果有要求,则无法完成任务在他们的域外自动化它。