Создание плаката в формате PDF на C#

У меня есть требование автоматического создания плаката в формате PDF на основе шаблона. Этот PDF-файл должен содержать пользовательский текст и изображения, предоставленные через веб-приложение. Я знаю, что вы можете добавить поля from в PDF, а затем заполнить их чем-то вроде iTextSharp (я использую C#), но они имеют сплошной фон, поэтому их нельзя наложить на постер. Я попытался создать прозрачный элемент управления формой в OpenOffice, но это не представляется возможным. Может ли кто-нибудь предложить метод выполнения этого требования?

Большое спасибо


person Jon    schedule 12.07.2012    source источник
comment
Код пожалуйста. Мы не можем работать в вакууме.   -  person Oded    schedule 12.07.2012
comment
Я еще не написал никакого кода. Я просто прошу некоторые предложения о том, как я могу достичь вышеизложенного.   -  person Jon    schedule 12.07.2012
comment
Начать кодирование. Если застряли, опубликуйте код, и мы поможем.   -  person Oded    schedule 12.07.2012
comment
Я не могу начать писать код, пока не узнаю, как я собираюсь решить проблему. Это не проблема кодирования, я просто прошу некоторые предложения по библиотеке.   -  person Jon    schedule 12.07.2012
comment
Который считается открытым и, следовательно, не подходит для переполнения стека — читайте FAQ.   -  person Oded    schedule 12.07.2012
comment
Я не согласен, в FAQ нет ничего, что говорило бы, что вы должны опубликовать код. Мой вопрос: как я могу создать плакат в формате PDF? Я думаю, что это довольно конкретно и не открыто.   -  person Jon    schedule 12.07.2012
comment
Вопрос открытый. Это упоминается в FAQ.   -  person Oded    schedule 12.07.2012


Ответы (1)


Это можно сделать с помощью ITextsharp. Это очень мощная библиотека PDF. Сохраните фон в формате pdf и загрузите его в потоке. Затем вы можете написать на загруженный pdf и можете вернуть постер.

 private PdfContentByte _pcb; 
Document document = new Document();

FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
PdfReader Mypdfreader= new PdfReader(fileStream);
 PdfTemplate background = writer.GetImportedPage(Mypdfreader, 1);
 document.NewPage();
_pcb = writer.DirectContentUnder;
_pcb.AddTemplate(background, 0, 0);
 _pcb = writer.DirectContent;
_pcb.BeginText();
         _pcb.SetFontAndSize(BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false), 10);
 _pcb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, text, 10, 5, 0);//10,5 are x and y coordinates resp.
 _pcb.EndText();

 writer.Flush();
fileStream.Close();

или обратитесь к образцу постера в формате PDF

person amesh    schedule 12.07.2012