vb点虐 打印pdf vb打印pdf文件

如何用.NET将DWG文件打印为PDF

因为有人问到,所以写了个例子。具体的要求是从.NET(比如C#)里面调用AutoCAD ActiveX API实现后台打印DWG文件为PDF文件,而且要把打印页面的大小设置成和DWG视图的页面的大小一致。当然除了ActiveX API,其它接口,比如ObjectARX和AutoCAD.NET API也支持打印并能实现上述功能的。不过我们今天就限定一下范围,用一用ActiveX API,而且指定产品是AutoCAD 2010吧。

站在用户的角度思考问题,与客户深入沟通,找到文安网站设计与文安网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册网站空间、企业邮箱。业务覆盖文安地区。

执行步骤:打开一个dwg文件,用netload加载下面代码所在的.dll文件,再输入命令plottest,就得到输出结果(一个.pdf文件)。

要用到的参考:

AcDbMgd.dll;AcMgd.dll;AutoCAD 2010 Type Library;System.Windows.Forms; AutoCAD/ObjectDBX Common 18.0 Type Library.

VB.NET:

Imports System

Imports Autodesk.AutoCAD.Runtime

Imports Autodesk.AutoCAD.Interop

Imports Autodesk.AutoCAD.Interop.Common

Imports Autodesk.AutoCAD.ApplicationServices

Imports Autodesk.AutoCAD.DatabaseServices

Imports Autodesk.AutoCAD.EditorInput

Autodesk.AutoCAD.Runtime.CommandMethod("Plottest") _

Public Sub PlotToPDF()

Dim activeDoc As Document = Application.DocumentManager.MdiActiveDocument

Dim ThisDrawing As AcadDocument = CType(activeDoc.AcadDocument, AcadDocument)

Dim layout As AcadLayout = ThisDrawing.ActiveLayout

Dim MediaName As String = layout.CanonicalMediaName

If MediaName.Equals("") Then

activeDoc.Editor.WriteMessage("There is no media set for the active layout.")

Return

Else

activeDoc.Editor.WriteMessage(("The media for the active layout is: " + MediaName))

End If

Try

Dim oplot As AcadPlotConfiguration = ThisDrawing.PlotConfigurations.Add("PDF", layout.ModelType)

oplot.PaperUnits = AcPlotPaperUnits.acMillimeters

oplot.StyleSheet = "monochrome.ctb"

oplot.PlotWithPlotStyles = True

oplot.ConfigName = "DWG To PDF.pc3"

oplot.UseStandardScale = True

oplot.StandardScale = AcPlotScale.acScaleToFit

oplot.PlotType = AcPlotType.acExtents

oplot.CenterPlot = True

Dim oMediaNames As Object = layout.GetCanonicalMediaNames

Dim mediaNames As ArrayList = New ArrayList(CType(oMediaNames, String()))

For Each sName As String In mediaNames

If sName.Contains(MediaName) Then

oplot.CanonicalMediaName = sName

layout.CopyFrom(oplot)

layout.PlotRotation = AcPlotRotation.ac0degrees

layout.RefreshPlotDeviceInfo()

ThisDrawing.SetVariable("BACKGROUNDPLOT", 0)

ThisDrawing.Plot.QuietErrorMode = True

ThisDrawing.Plot.PlotToFile("c:/temp/d1.pdf", "DWG To PDF.pc3")

oplot.Delete()

oplot = Nothing

Return

End If

Next

Catch es As System.Exception

System.Windows.Forms.MessageBox.Show(es.ToString)

End Try

End Sub

C#:

using System;

using System.Collections;

using System.Collections.Specialized;

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Interop;

using Autodesk.AutoCAD.Interop.Common;

// Define Command "plotTest"

[CommandMethod("plotTest")]

static public void PlotToPDF()

{

Document activeDoc = Application.DocumentManager.MdiActiveDocument;

AcadDocument ThisDrawing = activeDoc.AcadDocument as AcadDocument;

AcadLayout layout = ThisDrawing.ActiveLayout;

String MediaName = layout.CanonicalMediaName;

if (MediaName.Equals(""))

{

activeDoc.Editor.WriteMessage("There is no media set for the active layout.");

return;

}

else

{

activeDoc.Editor.WriteMessage("The media for the active layout is: " + MediaName);

}

try

{

AcadPlotConfiguration oplot = ThisDrawing.PlotConfigurations.Add("PDF", layout.ModelType);

oplot.PaperUnits = AcPlotPaperUnits.acMillimeters;

oplot.StyleSheet = "monochrome.ctb";

oplot.PlotWithPlotStyles = true;

oplot.ConfigName = "DWG To PDF.pc3";

oplot.UseStandardScale = true;

oplot.StandardScale = AcPlotScale.acScaleToFit;

oplot.PlotType = AcPlotType.acExtents;

oplot.CenterPlot = true;

Object oMediaNames = layout.GetCanonicalMediaNames();

ArrayList mediaNames = new ArrayList((string[])oMediaNames);

foreach (String sName in mediaNames)

{

if (sName.Contains(MediaName))

{

oplot.CanonicalMediaName = sName;

layout.CopyFrom(oplot);

layout.PlotRotation = AcPlotRotation.ac0degrees;

layout.RefreshPlotDeviceInfo();

ThisDrawing.SetVariable("BACKGROUNDPLOT", 0);

ThisDrawing.Plot.QuietErrorMode = true;

ThisDrawing.Plot.PlotToFile("c://temp//d1.pdf","DWG To PDF.pc3");

oplot.Delete();

oplot=null;

return;

}

}

}

catch (System.Exception es)

{

System.Windows.Forms.MessageBox.Show(es.ToString());

}

}

输出结果:

vb点虐 如何将excel指定的sheet生成pdf 我里面有sheet1~5,只想将sheeet2、3转成PDF,并且转完后打开预览?

你可以使用Spire.Xls来实现。Spire.Xls可以让你方便地将excel中指定的sheet导出为pdf文件,并且支持在导出时指定sheet2和sheet3。同样可以使用该框架来快速预览生成的pdf文件。

vb点虐 导出PDF

利用DataWindow点虐 在 vb点虐 下导出PDF格式文件

利用datawindow点虐 ,导出PDF文件,实现前提:

1.安装Acrobat Distiller虚拟打印机,注意要用datawindow点虐 提供的打印驱动,在c:\program files\sybase\datawindow点虐 2.0\driver中,在文章最后,我会提供一个静态安装虚拟打印机的批处理文件,方便安装。

2.安装Ghostscript 7.05 ,在网上找,免费的。

3.导出PDF文件前,一要指定虚拟打印机名,其次导出格式为PDF(Export.PDF.Method=Distill!),另外还要指定 PDF.Distill.CustomPostScript=Yes。

具体代码如下:

''' summary

''' 导出文件

''' /summary

''' param name="sender"/param

''' param name="e"/param

''' remarks/remarks

Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click

Try

Dim strFilename, strPrinter As String

Dim saveDg As New SaveFileDialog

strPrinter = Me.dwPrint.Describe("DataWindow.Print.PrinterName")

saveDg.FileName = Me.dwPrint.Tag.ToString

saveDg.Filter = "Pdf文件|*.pdf|Excel文件|*.xls|所有文件|*.*"

If saveDg.ShowDialog = Windows.Forms.DialogResult.OK Then

strFilename = saveDg.FileName

If strFilename.IndexOf(".pdf") 0 Then

Me.dwPrint.Modify("DataWindow.Print.PrinterName='Acrobat Distiller'")

Me.dwPrint.Modify("DataWindow.Export.PDF.Method=Distill!")

Me.dwPrint.Modify("DataWindow.Export.PDF.Distill.CustomPostScript=Yes")

Me.dwPrint.SaveAs(strFilename, Sybase.DataWindow.FileSaveAsType.Pdf, True)

ElseIf strFilename.IndexOf(".xls") 0 Then

Me.dwPrint.SaveAs(strFilename, Sybase.DataWindow.FileSaveAsType.Excel, True)

End If

Me.dwPrint.Modify("DataWindow.Print.PrinterName='" + strPrinter + "'")

MessageBox.Show("导出成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

Catch ex As Exception

MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub

4 批处理文件(实现静默安装)

急求vb点虐 pdf静默打印问题

你现在的默认打印机是Adobe PDF,修改一下默认打印机为你现在需要的打印机即可。

新闻标题:vb点虐 打印pdf vb打印pdf文件
URL地址:https://www.cdcxhl.com/article24/ddsgcje.html

成都网站建设公司_创新互联,为您提供面包屑导航域名注册自适应网站定制网站静态网站网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设