【问题标题】:Print to .pdf printer creates corrupted file打印到 .pdf 打印机创建损坏的文件
【发布时间】:2017-02-24 03:30:10
【问题描述】:

尝试打印到文件并从 .docx 或 .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:\Junk\Sample.docx %%创建者:PScript5.dll 版本 5.2.2 %%创建日期:2/24/2017 14:12:57 %%对于:用户 %%BoundingBox:(参加) %%Pages: (参加) %%方向:纵向 %%PageOrder:特殊 %%DocumentNeededResources:(参加) %%DocumentSuppiedResources:(参加) %%文档数据:Clean7Bit %%TargetDevice: (PDFCreator) (3010) 096 %%语言级别:3 %%结束评论 %%BeginDefaults %%PageBoundingBox:0 0 595 842 %%查看方向:1 0 0 1 %%EndDefaults

已尝试将标题编辑为第一行的 %PDF 变体,但到目前为止还没有使文件可打开。

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

谢谢。

【问题讨论】:

    标签: c# pdf printing corruption printdocument


    【解决方案1】:

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

    【讨论】:

    • 此答案适用于 PDFCreator 和 CutePDF Writer,但并非适用于所有 PDF 打印机。一些 PDF 打印机,例如 Win2PDF 直接输出到 PDF 并支持 .NET .PrintToFileName 和 .PrintFileName 属性。
    • 感谢您的 cmets,Bradley 和 Craig。我将尝试 Win2PDF,如果仍然无法正常工作,我将返回打开 Word 实例。
    猜你喜欢
    • 2018-08-15
    • 2013-07-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多