Я хочу, чтобы на моем веб-сайте была возможность печатать содержимое страницы в формате PDF. Я попробовал несколько вариантов для этого, но лучшим соответствием был wkhtmltopdf, поскольку он также обрабатывал многоязычные символы.
Я получил его на моем локальном сервере, но когда я загрузил его на облачный веб-сервер для хостинга, теперь он выдает мне следующую ошибку
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Request failed.
Я изменил политику безопасности в web.config
<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
</securityPolicy>
Но он все еще не работает
Тестовый URL
http://www.noor.com.asp1 -20.dfw1-2.websitetestlink.com / ArticleDetails.aspx? Language = EN-US & PageId = 19 & ArticleID = 4
Вы можете щелкнуть ссылку «Загрузить» в конце этой ссылки, чтобы преобразовать определенный раздел веб-страницы в формат PDF. Он отлично работает на локальном сервере, но не работает по соображениям безопасности на веб-сервере. Я искал несколько дней, чтобы PDF работал, а теперь он не работает на веб-сервере. Я попробовал другой вариант, но они по какой-то причине iText не конвертировали в арабский, а печатали ненужные символы только для арабской версии страницы.
Пожалуйста, посоветуйте, что мне следует изменить, чтобы сделать это правильно.
Я разработал этот сайт, используя asp.net 4.0, используя c #
Код, который я использую для создания PDF
string url = "PrintArticle.aspx?articleID=" + Request["articleID"] + "&download=yes&Language=" + Request["Language"];
// string args = string.Format("\"{0}\" - ", url);
string args = string.Format("\"{0}\" - ", "http://www.domain.com.asp1-20.dfw1-2.websitetestlink.com/" + url);
var startInfo = new ProcessStartInfo(Server.MapPath("bin\\wkhtmltopdf.exe"), args)
{
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true
};
var proc = new Process { StartInfo = startInfo };
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
byte[] buffer = proc.StandardOutput.CurrentEncoding.GetBytes(output);
proc.WaitForExit();
proc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf");
Response.BinaryWrite(buffer);
Response.End();