2017-02-24 574 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