Я пытаюсь создать приложение на C #, которое позволяет перетаскивать PDF-файл этикетки DHL Shipping на .exe, преобразовывать его в изображение, масштабировать, обрезать, компоновать и распечатывать на термопринтере, напримербрат ql500.
После большого количества «если ошибка, то stackoverflow ()» я получил это, чтобы сделать то, что я хочу.
Только одна серьезная проблема , я не могуизменить параметры печати, я всегда должен делать это вручную, и он не останется.Я должен установить следующие параметры: Ширина бумаги (62 мм) и Длина печати (160 мм).
Я поместил все настройки в предустановку под названием «DHLLabel», но не могу установить ее по умолчанию.
фото:
диалоговое окно печати диалоговое окно параметров
Моя проблема заключается в том, что эти параметры (формат: DHLLabel) всегда возвращаются кПо умолчанию.
При настройке Width (Bandbreite) или Length (Länge) на то, что мне нужно, он возвращается к значению по умолчанию в следующий раз, когда я хочу напечатать этикетку.
Я попытался установить его в C # с помощью PrintDocument.DefaultPageSettings.PaperSize но он ничего не сделает.
Вот что я получил до сих пор: (требуется библиотека cs-pdf-to-image)
using PdfToImage;
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace DHLLabelConverter
{
class Program
{
public static void CopyRegionIntoImage(Bitmap srcBitmap, Rectangle srcRegion, Bitmap destBitmap, Rectangle destRegion)
{
using (Graphics grD = Graphics.FromImage(destBitmap))
{
grD.DrawImage(srcBitmap, destRegion, srcRegion, GraphicsUnit.Pixel);
}
}
static void Main(string[] args)
{
if(args.Length > 0 && args[0] != "" && File.Exists(args[0]) )
{
PDFConvert converter = new PDFConvert();
GhostScriptRevision version = converter.GetRevision();
bool Converted = false;
converter.RenderingThreads = -1;
converter.TextAlphaBit = -1;
converter.TextAlphaBit = -1;
converter.FitPage = true;
converter.OutputFormat = "png256";
converter.Width = 4000;
converter.Height = 6000;
converter.ResolutionX = 1000;
converter.ResolutionY = 1000;
converter.OutputToMultipleFile = false;
converter.FirstPageToConvert = 1;
converter.LastPageToConvert = 1;
System.IO.FileInfo input = new FileInfo(args[0]);
//convert pdf to image
Converted = converter.Convert(input.FullName, "temp.png");
String fil = Path.GetDirectoryName(args[0]);
//open image to create a modified version of it
var stream = File.OpenRead("temp.png");
Bitmap label_main = new Bitmap(stream);
Bitmap label_edit = new Bitmap(1750, 700);
//modify and compose the actual image
label_main.RotateFlip(RotateFlipType.Rotate90FlipNone);
CopyRegionIntoImage(label_main, new Rectangle(3000, 270, 2120, 1250), label_edit, new Rectangle(20, 0, 1100, 700));
CopyRegionIntoImage(label_main, new Rectangle(3050, 1530, 1200, 180), label_edit, new Rectangle(50, 585, 680, 105));
CopyRegionIntoImage(label_main, new Rectangle(3500, 2360, 1100, 1350), label_edit, new Rectangle(1100, 0, 650, 700));
//save the edited image.
label_edit.Save("temp2.png");
//open print dialog, pass edited image into it and set parameters
PrintDialog pdi = new PrintDialog();
PrintDocument pdo = new PrintDocument();
pdo.PrintPage += (sender, arg) =>
{
Image i = Image.FromFile(@"temp2.png");
arg.Graphics.DrawImage(i, 0,0,600,240);
};
pdo.DefaultPageSettings.PrinterSettings.PrinterName = "Brother QL-500";
pdo.DefaultPageSettings.Landscape = true;
pdi.Document = pdo;
if (pdi.ShowDialog() == DialogResult.OK)
{
pdo.Print();
}else{
MessageBox.Show("Print Cancelled");
}
}
}
}
}