如何在 C# 中静默保存 pdf
How to save a pdf silently in c#
我有一个受保护的 PDF。
如果您打开此 PDF,请打开打印对话框并选择 "Print to PDF",但如果此时您将其保存在您的 PC 中,它将被保存为未受保护。
我想用 C# 来做。我有这个代码:
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
proc.StartInfo.Arguments = String.Format(@"/o /p /h C:\Users\itsvan.moreno\Desktop.pdf", @"C:\Users\itsvan.moreno\Desktop\");
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.EnableRaisingEvents = true;
proc.Start();
if (proc.HasExited == false)
{
proc.WaitForExit(10000);
}
proc.Close();
所有过程都是正确的,但是会显示一个弹出窗口 window 将名称放在新的 pdf 文件中。
如何在没有弹出窗口的情况下另存为?
您的代码并没有真正解除保护"in C#"。您正在使用 Acrobat Reader.
解除保护
您的代码打开 Acrobat Reader 并告诉它(使用 /o /p /h
参数)打开一个文件并直接转到打印对话框。如果您不能更进一步,那是 Acrobat 的限制 Reader.
您可以尝试使用 /t
选项。参见 here。但我怀疑它只是没有给你一种方法来将文件名提供给打印到 PDF 驱动程序。如果没有,那么你就不能这样做。
您可以查看 .NET 的 PDF 库,这样您实际上就可以在 .NET 中修改 PDF,但好的库不是免费的。例如,Aspose.PDF 是一个。
我有一个受保护的 PDF。
如果您打开此 PDF,请打开打印对话框并选择 "Print to PDF",但如果此时您将其保存在您的 PC 中,它将被保存为未受保护。
我想用 C# 来做。我有这个代码:
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
proc.StartInfo.Arguments = String.Format(@"/o /p /h C:\Users\itsvan.moreno\Desktop.pdf", @"C:\Users\itsvan.moreno\Desktop\");
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.EnableRaisingEvents = true;
proc.Start();
if (proc.HasExited == false)
{
proc.WaitForExit(10000);
}
proc.Close();
所有过程都是正确的,但是会显示一个弹出窗口 window 将名称放在新的 pdf 文件中。
如何在没有弹出窗口的情况下另存为?
您的代码并没有真正解除保护"in C#"。您正在使用 Acrobat Reader.
解除保护您的代码打开 Acrobat Reader 并告诉它(使用 /o /p /h
参数)打开一个文件并直接转到打印对话框。如果您不能更进一步,那是 Acrobat 的限制 Reader.
您可以尝试使用 /t
选项。参见 here。但我怀疑它只是没有给你一种方法来将文件名提供给打印到 PDF 驱动程序。如果没有,那么你就不能这样做。
您可以查看 .NET 的 PDF 库,这样您实际上就可以在 .NET 中修改 PDF,但好的库不是免费的。例如,Aspose.PDF 是一个。