gpt4 book ai didi

c# - 使用 PDFSharp 创建多个页面

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:44 25 4
gpt4 key购买 nike

您好,我正在使用 PDFSharp 为一些图表创建 PDF 文档。将我的图表转换为 PDF 后,对于非常小的图表,我应该将它们打印在一页上,但是如果我有大图表,那么将它们打印在一页上会产生较差的打印质量图表将显示得很小并且图表内容不可读.如果我给出高比例,图表会显示得更大,但一些节点会消失。

那么我如何创建更多取决于我的比例和图表大小的页面?

private void convertBitmap(BitmapSource Img)
{
try
{
PdfSharp.Pdf.PdfDocument document = new PdfSharp.Pdf.PdfDocument();
document.Info.Title = activeDiagram.Model.Name;
PdfSharp.Pdf.PdfPage pdfPage = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(pdfPage);
XImage xIMage = XImage.FromBitmapSource(Img);
XImage logo = XImage.FromFile("logo.png");
pdfPage.Width = xIMage.PointWidth;
pdfPage.Height = xIMage.PointHeight;
//draw the logo
gfx.DrawImage(xIMage, 15, 70, pdfPage.Width, pdfPage.Height);
gfx.DrawImage(logo, 500, 5);
// Draw the texts
string typ = "";
if (activeDiagram == myDiagram1)
typ = "EPC";

XFont font = new XFont("Arial", 12, XFontStyle.Bold);
XFont font2 = new XFont("Arial", 10, XFontStyle.Bold);
gfx.DrawString("Modelname: " + activeDiagram.Model.Name, font, XBrushes.Black,
new XRect(50, 5, 400, 20), XStringFormats.TopLeft);
gfx.DrawString("Modeltyp: " + typ, font, XBrushes.Black, new XRect(50, 25, 400,
20), XStringFormats.TopLeft);
gfx.DrawLine(new XPen(XColor.FromKnownColor(XKnownColor.CornflowerBlue), 2), 20,
45, 600, 45);

gfx.DrawLine(new XPen(XColor.FromKnownColor(XKnownColor.CornflowerBlue), 2), 20,
900, 600, 900);
gfx.DrawString("Date: " + DateTime.Now.ToShortDateString(), font2, XBrushes.Black,
new XRect(50, 905, 100, 25), XStringFormats.TopLeft);
gfx.DrawString("Page: 1 von 1 ", font2, XBrushes.Black, new XRect(530, 905, 100,
25), XStringFormats.TopLeft);

SaveFileDialog dlg = new SaveFileDialog();
lg.FileName = activeDiagram.Model.Name;
dlg.AddExtension = true;
dlg.DefaultExt = "pdf";
dlg.Filter = "PDF Document|*.pdf|*.pdf|";
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// Save the document...
string filename = dlg.FileName;
document.Save(filename);
// ...and start a viewer.
Process.Start(filename);
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message, "Error saving graph as a
pdf");
}
}

最佳答案

使用 PDFsharp 创建多个页面很简单 - 但 PDFsharp 不准备将您的位图分布在多个页面上,所以这个任务留给您。

根据位图的大小,您的代码应决定将图像分成两部分或四部分,并将它们绘制在两页或四页上。这样您就不必依赖打印机驱动程序的功能。

PDFsharp 可以创建更大的页面 - 但您必须依赖打印机驱动程序的功能才能将单个 PDF 页面打印到多个物理页面上。这可能有效也可能无效。

如果您自己拆分图像,则可以完全控制生成的 PDF 文件。我建议用公共(public)(重叠) strip 打印两个或四个部分。

关于c# - 使用 PDFSharp 创建多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12143465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com