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

MagnatBelka

Client
Регистрация
01.02.2016
Сообщения
25
Благодарностей
0
Баллы
1
Так как все-таки решить вопрос с ошибкой "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);
}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
var files = Sistem.IO.Directory.GetFiles(@"d:\\4");
если прописываешь собаку, ставь одинарные слэши
 

MagnatBelka

Client
Регистрация
01.02.2016
Сообщения
25
Благодарностей
0
Баллы
1

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Скрин в студию
 

MagnatBelka

Client
Регистрация
01.02.2016
Сообщения
25
Благодарностей
0
Баллы
1

kirl0g

Client
Регистрация
19.02.2016
Сообщения
68
Благодарностей
14
Баллы
8
Спасибо большое за тему, как раз сейчас очень нужно!

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

Спасибо!
 
  • Спасибо
Реакции: lapa666

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Почему то при генерации PDF из html ссылка вставляется только под низ картинки, хотя в хтмл ссылка идёт под всей картинкой.
Печаль печальная. Не получается исправить..
 
  • Спасибо
Реакции: WWWorm

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
В инете туева куча платных либ для этого
 

Dmitry

Client
Регистрация
03.07.2014
Сообщения
66
Благодарностей
5
Баллы
8
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 в указанном месте не появляется. В чем может быть ошибка?
 
Последнее редактирование:

dafaroff

Client
Регистрация
03.05.2011
Сообщения
76
Благодарностей
137
Баллы
33
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

Dmitry

Client
Регистрация
03.07.2014
Сообщения
66
Благодарностей
5
Баллы
8
У тебя в аргументе указано -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

DmKa

Client
Регистрация
24.09.2017
Сообщения
126
Благодарностей
16
Баллы
18
В теме обсуждалось объединению двух pdf файлов, но к сожалению метод не выкладывался.

Есть ли готовое решение данного вопроса?
 
  • Спасибо
Реакции: Radzhab

DmKa

Client
Регистрация
24.09.2017
Сообщения
126
Благодарностей
16
Баллы
18
// Рисуем текст. Да да) вы не ослышались. Рисуем текст в указанных координатах
gfx.DrawString("{-Variable.path-}", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormat.Center);
Как правильно добавить текст из переменной?
В указанной конструкции все срабатывает если в переменной однострочный текст. Многострочный дает ошибку.

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

Можно ли имя файла подставлять из переменной?
 

GarrySilver

Client
Регистрация
21.09.2017
Сообщения
3
Благодарностей
0
Баллы
1
Добра всем и радости! Вот тоже залип на том, как из html - pdfку смастерить, выдает ошибку (Ошибка в действии "CS1010" "Символ новой строки в константе". [Строка: 8; Cтолбец: 115])

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

GarrySilver

Client
Регистрация
21.09.2017
Сообщения
3
Благодарностей
0
Баллы
1
Разобрался и со строками, теперь беда с рисунком и по прежнему не совсем понятно, как сделать рабочей ссылку
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Пропущена директива using
 

GarrySilver

Client
Регистрация
21.09.2017
Сообщения
3
Благодарностей
0
Баллы
1
Пропущена директива using
Это -то видно в ошибке....) А где конкретно и что пропущено, не понимаю, сниппет полностью скопирован из топика, сменил только директорию. ХТМЛ тоже беда, пост выше. Со ссылкой там вообще завал, перелопатил похоже все комбинации кода C# ....ничего (
 

gonzo

Client
Регистрация
09.09.2009
Сообщения
32
Благодарностей
28
Баллы
18
Почему то при генерации PDF из html ссылка вставляется только под низ картинки, хотя в хтмл ссылка идёт под всей картинкой.
Печаль печальная. Не получается исправить..
Сегодня заморочился с этой штукой.

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

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

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28

Chick80

Client
Регистрация
04.12.2014
Сообщения
307
Благодарностей
83
Баллы
28
Сегодня заморочился с этой штукой.

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

Область ссылки в пдф под картинкой равна дефолтному размера шрифта в стилях. Если в стилях принудительно указать размер шрифта побольше для контейнера с картинкой, то область ссылки станет больше ;-)
Как как сделать, чтобы ссылкой была картинка а не область под ней не разобрался? :-))
 

Chick80

Client
Регистрация
04.12.2014
Сообщения
307
Благодарностей
83
Баллы
28
С позволения автора (извините, если что-то не так делаю), расскажу о своем способе производства 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);
Все ссылки замечательно расставляет и вообще работает без косяков. Пользуйтесь, кому нужно.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Все ссылки замечательно расставляет и вообще работает без косяков. Пользуйтесь, кому нужно.
Ваш метод переносит ссылки, но почему-то качество PDF очень плохое, некоторые буквы бывают не читабельными, и кнопка со ссылкой находится не в том месте где она находится в HTML
Как можно улучшить качество и правильно отображать кнопки?

а что это значит?
 

Chick80

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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Насчет местонахождения кнопки - тут Вам нужно поиграться с html. Попробуйте выравнивания или еще какие-нибудь фокусы со стилями.
в том-то и дело, что в html все как надо)

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

Chick80

Client
Регистрация
04.12.2014
Сообщения
307
Благодарностей
83
Баллы
28
в том-то и дело, что в html все как надо)

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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
я не прогер, поэтому для меня это брейкданс на голове )
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
в том-то и дело, что в html все как надо)

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

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

Chick80

Client
Регистрация
04.12.2014
Сообщения
307
Благодарностей
83
Баллы
28

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
Последнее редактирование:
  • Спасибо
Реакции: Chick80

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