2017-02-24 573 views
0

尝试打印到文件,从.DOCX创建一个PDF或.xlsx打印为pdf格式打印机造成损坏的文件

它管理创建的文件,但试图打开它的时候,表示该文件已损坏或损坏。

代码:

 string name = Path.GetFileNameWithoutExtension(filename); 
     string path = Path.GetDirectoryName(filename); 

     Directory.CreateDirectory(path); 

     PrintDocument pd = new PrintDocument(); 
     pd.DocumentName = filename; 

     PrinterSettings printerSettings = new PrinterSettings(); 
     printerSettings.PrinterName = "PDFCreator"; 
     //printerSettings.PrinterName = "CutePDF Writer"; 

     printerSettings.PrintToFile = true; 
     printerSettings.PrintFileName = String.Format(@"{0}/{1}.pdf", path, name); 

     pd.PrinterSettings = printerSettings; 
     pd.Print(); 

望着在文本编辑器的PDF,标题写着:

%PS-Adobe-3.0并 %%标题:C:\垃圾\样品.docx %%创建者:PScript5.dll版本5.2.2 %% CreationDate:2017/2/24 14:12:57 %%对于:用户 %% BoundingBox:(atend) %% Pages:(atend ) %%方向:肖像 %% PageOrder:特殊 %% DocumentNeededResources:(atend) %% DocumentSuppliedResources:(atend) %% DocumentData:Clean7Bit %% TargetDevice:(PDFCreator的)(3010)096 %%语言级:3个 %% EndComments %% BeginDefaults %% PageBoundingBox:0 0 595 842 %% ViewingOrientation:1 0 0 1 %% EndDefaults

是否尝试编辑标题为第一行%PDF的变化,但至今没有任何文件可以打开。

任何帮助或建议,将不胜感激。

谢谢。

回答

0

打印到文件与指定保存由PDF打印机生成的文件的位置不同;它只是将通常发送到打印机的所有指令输出到文件中(在本例中为一系列PostScript命令)。没有办法以编程方式指定PDF打印机保存其生成的文件的位置,因为这是特定于实现的。

+0

PDFCreator和CutePDF Writer的回答是正确的,但并非所有PDF打印机都是如此。某些PDF打印机(如Win2PDF)直接输出为PDF,并支持.NET .PrintToFileName和.PrintFileName属性。 –

+0

感谢您的意见,布拉德利和克雷格。我会尝试Win2PDF,如果它仍然不起作用,我会回到打开Word的实例。 – Pearcy