Создание PDF документов (new!)

Так как все-таки решить вопрос с ошибкой "CS1009" "Нераспознанная управляющая последовательность" [строка 5 столбец 35]?
Сниппет такой:

var files = Sistem.IO.Directory.GetFiles(@"d:\\4");
foreach (var file in files)
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName =@"D:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"; // Путь к программе
p.StartInfo.Arguments = string.Format("-l {0} d:\\5" + System.IO.Path.GetFileNameWithoutExtension(file) + "TestPDF.pdf", file);
p.Start();
p.WaitForExit(99999);
}
 
Спасибо большое за тему, как раз сейчас очень нужно!

А есть ли на данный момент решение, как всю pdf сделать ссылкой?
То есть куда не кликни - перейдешь на сайт?

Спасибо!
 
  • Спасибо
Реакции: lapa666
Почему то при генерации PDF из html ссылка вставляется только под низ картинки, хотя в хтмл ссылка идёт под всей картинкой.
Печаль печальная. Не получается исправить..
 
  • Спасибо
Реакции: WWWorm
Radzhab спасибо, всё работает. Но вот у меня вопрос, каким образом использовать переменные? Например, я хочу брать разные html и складывать их в разные папки.
В переменных указал

project.Variables["Proj_c_var"].Value = D:\test.html
project.Variables["Proj_b_var"].Value = D:\TestPDF.pdf

Код:
Развернуть Свернуть Копировать
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName =@"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"; // Путь к программе
p.StartInfo.Arguments = @"-1 " + project.Variables["Proj_c_var"].Value + " " + project.Variables["Proj_b_var"].Value; // -1 это спец.ключ для быстрой генерации. Теряем качество
p.Start();
p.WaitForExit(99999);

Сниппет выполняется корректно, но pdf в указанном месте не появляется. В чем может быть ошибка?
 
Последнее редактирование:
Radzhab спасибо, всё работает. Но вот у меня вопрос, каким образом использовать переменные? Например, я хочу брать разные html и складывать их в разные папки.
В переменных указал

project.Variables["Proj_c_var"].Value = D:\test.html
project.Variables["Proj_b_var"].Value = D:\TestPDF.pdf

Код:
Развернуть Свернуть Копировать
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName =@"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"; // Путь к программе
p.StartInfo.Arguments = @"-1 " + project.Variables["Proj_c_var"].Value + " " + project.Variables["Proj_b_var"].Value; // -1 это спец.ключ для быстрой генерации. Теряем качество
p.Start();
p.WaitForExit(99999);

Сниппет выполняется корректно, но pdf в указанном месте не появляется. В чем может быть ошибка?

У тебя в аргументе указано -1 (минус один), а должно быть -l (минус l маленькая английская л)
p.StartInfo.Arguments = @"-l " вот так.
 
  • Спасибо
Реакции: molotok и Dmitry
У тебя в аргументе указано -1 (минус один), а должно быть -l (минус l маленькая английская л)
p.StartInfo.Arguments = @"-l " вот так.
Спасибо!

Вот такой код работает, при этом путь к файлу должен указываться через обратный слэш (Proj_html_var = D:/test/1.html)

Код:
Развернуть Свернуть Копировать
String C_var = project.Variables["Proj_html_var"].Value;
String B_var = project.Variables["Proj_pdf_var"].Value;
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName =@"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"; // Путь к программе
p.StartInfo.Arguments = string.Format("-l " + C_var + " " + B_var); // -l это спец.ключ для быстрой генерации. Теряем качество
p.Start();
p.WaitForExit(99999);
 
  • Спасибо
Реакции: molotok
В теме обсуждалось объединению двух pdf файлов, но к сожалению метод не выкладывался.

Есть ли готовое решение данного вопроса?
 
  • Спасибо
Реакции: Radzhab
// Рисуем текст. Да да) вы не ослышались. Рисуем текст в указанных координатах
gfx.DrawString("{-Variable.path-}", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormat.Center);

Как правильно добавить текст из переменной?
В указанной конструкции все срабатывает если в переменной однострочный текст. Многострочный дает ошибку.

Задача: Создать пдф файл из ранее созданного текста в "списке"

Можно ли имя файла подставлять из переменной?
 
Добра всем и радости! Вот тоже залип на том, как из html - pdfку смастерить, выдает ошибку (Ошибка в действии "CS1010" "Символ новой строки в константе". [Строка: 8; Cтолбец: 115])
1e.jpg

.... Добился работы первого сниппета, но тоже интересует, как создавать PDF из многострочных текстов с нормальными абзацами и переносами строк. А еще с рабочей ссылкой. Заранее благодарен.
 
Последнее редактирование:
Разобрался и со строками, теперь беда с рисунком и по прежнему не совсем понятно, как сделать рабочей ссылку
2w.jpg
 
Пропущена директива using

Это -то видно в ошибке....) А где конкретно и что пропущено, не понимаю, сниппет полностью скопирован из топика, сменил только директорию. ХТМЛ тоже беда, пост выше. Со ссылкой там вообще завал, перелопатил похоже все комбинации кода C# ....ничего (
 
Почему то при генерации PDF из html ссылка вставляется только под низ картинки, хотя в хтмл ссылка идёт под всей картинкой.
Печаль печальная. Не получается исправить..

Сегодня заморочился с этой штукой.

Решение оказалось крайне простым))

Область ссылки в пдф под картинкой равна дефолтному размера шрифта в стилях. Если в стилях принудительно указать размер шрифта побольше для контейнера с картинкой, то область ссылки станет больше ;)
 
  • Спасибо
Реакции: Chick80 и ZennoScript
Сегодня заморочился с этой штукой.

Решение оказалось крайне простым))

Область ссылки в пдф под картинкой равна дефолтному размера шрифта в стилях. Если в стилях принудительно указать размер шрифта побольше для контейнера с картинкой, то область ссылки станет больше ;-)
Как как сделать, чтобы ссылкой была картинка а не область под ней не разобрался? :))
 
С позволения автора (извините, если что-то не так делаю), расскажу о своем способе производства pdf-ов. Он ничем кардинально не отличается от вышеописанного, за исключением используемой софтины. Пользуюсь Total HTML Converter (от CoolUtils) - легко гуглится ломанная версия.
Код получается почти такой же (в общем-то отсюда его и брал, просто немножко изменил под параметры софтины):
Код:
Развернуть Свернуть Копировать
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName =@"C:\Program Files (x86)\CoolUtils\Total HTML Converter\HTMLConverter.exe"; // Путь к программе
p.StartInfo.Arguments = project.Directory + @"\source\html.html "+ project.Directory + @"\pdf\TestPDF2.pdf"+@" -c PDF -engine internal -fo";
p.Start();
p.WaitForExit(99999);
Все ссылки замечательно расставляет и вообще работает без косяков. Пользуйтесь, кому нужно.
 
Все ссылки замечательно расставляет и вообще работает без косяков. Пользуйтесь, кому нужно.
Ваш метод переносит ссылки, но почему-то качество PDF очень плохое, некоторые буквы бывают не читабельными, и кнопка со ссылкой находится не в том месте где она находится в HTML
Как можно улучшить качество и правильно отображать кнопки?

-c PDF -engine internal -fo
а что это значит?
 
Ваш метод переносит ссылки, но почему-то качество PDF очень плохое, некоторые буквы бывают не читабельными, и кнопка со ссылкой находится не в том месте где она находится в HTML
Как можно улучшить качество и правильно отображать кнопки?
Насчет местонахождения кнопки - тут Вам нужно поиграться с html. Попробуйте выравнивания или еще какие-нибудь фокусы со стилями.
Я сталкивался с тем, что если ширина документа достаточно большая, элементы складываются попарно в одной строке. Это решается таблицей или уменьшением ширины pdf.
По поводу качества и прочих моментов, честно говоря, не особо заморачивался с настройками, Вы можете самостоятельно почитать хелп по командной строке в разделе "Помощь-->Commadn Line Params". Там довольно много настроек, я для себя просто подобрал нужные. У меня html.html состоит из одних картинок, поэтому качество файла большого значения не имеет.
 
  • Спасибо
Реакции: sydoow
Насчет местонахождения кнопки - тут Вам нужно поиграться с html. Попробуйте выравнивания или еще какие-нибудь фокусы со стилями.
в том-то и дело, что в html все как надо)

я разобрался в чем была проблема со ссылками, там я в ссылку оборачивал весь DIV, а надо было только текст (анкор)
 
в том-то и дело, что в html все как надо)

я разобрался в чем была проблема со ссылками, там я в ссылку оборачивал весь DIV, а надо было только текст (анкор)
Как бы там ни было - с этой софтиной реально сделать нормальную пдф-ку, хотя и с нехитрыми танцами с небольшим бубном ))
 
в том-то и дело, что в html все как надо)

я разобрался в чем была проблема со ссылками, там я в ссылку оборачивал весь DIV, а надо было только текст (анкор)
Можете скинуть пример html файла, хоть с 1 кнопкой, но с ссылкой. У меня почему-то ссылки не переносятся, может я не правильно html делаю, хочу проверить.

Up
Отбой, скачал триал версию, все ссылки переносит. Проблема выходит в крякнутой версии.
 
Последнее редактирование:
Последнее редактирование:
  • Спасибо
Реакции: Chick80

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)