2017-01-17 8 views
0

Я пишу программу, которая позволит мне печатать теги продаж в моем магазине Bowling Pro. В настоящее время я делаю их вручную, но я ищу, чтобы было проще создавать. Я создал программу с VS2015, которая запрашивает все поля и сохраняет ее в базе данных Access, а также печатает ее в созданном мной шаблоне. Проблема, с которой я сталкиваюсь, - форматирование текста, который появляется, когда я делаю это в Photoshop. Даже если это совсем немного, но это правда, но в настоящее время я не могу понять, как написать его на шаблоне так, как я хочу. This - это шаблон, который я пытаюсь напечатать, нижняя часть отформатирована с использованием Photoshop, а верхняя часть - пустая. Im думает, что может быть проще всего создать одно изображение и добавить его в pdf (5 раз).Как форматировать столбцы с помощью iText7

Вот мой код:

private void print() 
    { 
     string dest = @"C:\Users\bwilliams\Desktop\balltest1.pdf"; 
     string src = @"C:\Users\bwilliams\Desktop\BallTags.pdf"; 
     Rectangle[] columns = new Rectangle[] 
     { 
      new Rectangle(100,500,150,200), 
      new Rectangle(250,500,150,200), 
      new Rectangle(400,500,150,200), 
      new Rectangle(550,500,150,200) 

     }; 
     PdfWriter writer = new PdfWriter(dest); 
     PdfDocument pdf = new PdfDocument(new PdfReader(src), writer); 
     Document doc = new Document(pdf,PageSize.A4.Rotate());    
     doc.SetRenderer(new ColumnDocumentRenderer(doc, columns));   
     doc.Add(new Paragraph("Ebonite").SetPaddings(150, 60, 0, 0).SetFontSize(24).SetFont(Arial).SetFixedLeading(24)); 
     doc.Add(new Paragraph("GB2 MVP").SetPaddings(150, 0, 0, 0).SetFontSize(24).SetFixedLeading(24)); 
     doc.Add(new Paragraph("$114.95").SetPaddings(150, 0, 0, 0).SetFontSize(24).SetFixedLeading(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 
     doc.Add(new Paragraph("").SetPaddings(0, 0, 0, 0).SetFontSize(24)); 







     doc.Close(); 
    } 

Я просто инфо жёстко сейчас вместо того, чтобы использовать входные данные из текстовых полей .. Here является то, что вы получаете, когда вы нажимаете печать.

Я не уверен, как отформатировать следующую строку над для CORE: Обложка: ОТДЕЛКА: RG: Diff:

Я также не уверен, как добавить шрифт Arial (черный) для iText7 Font Factory.

Спасибо, Brandon

ответ

1

Ваш пост содержит различные вопросы.

Шрифты

Вы хотите создать в IText 7. PdfFont Это делается совсем другим (и гораздо проще), как по сравнению с IText 5. В IText 5, вы имели Font класс и класс BaseFont. Те больше не нужны. Вы просто сделать это:

PdfFont font = PdfFontFactory.CreateFont(pathToArialBlack, true); 

В этой строке pathToArialBlack это путь к ARIBLK.TTF, например, C:\WINDOWS\Fonts\ARIBLK.TTF.

Колонки:

Вопрос о столбцах неправильно. Глядя на желаемый результат. Я не могу представить, почему вы используете ColumnDocumentRenderer. Я бы создал объект Canvas для каждого прямоугольника и передал объект Canvas методу, который добавляет содержимое в холст. Убедитесь, что вы добавляете байты изображения только один раз, передавая объект Image методу, а не создавая Image в методе столько раз, сколько у вас есть Canvas объектов.

+0

Как добавить текст в холст, если вы хотите создать список? – Bwill

+0

Можете ли вы подробно остановиться на этом вопросе? Почему вы говорите о «Листе»? Почему, по-вашему, требуется «Список»? Ваш вопрос звучит очень странно. –

+0

Причина моего вопроса заключается в том, что единственным примером, который я нашел на вашем сайте, является тот, который использует IList в примере «Звездных войн». В своем первоначальном ответе вы рекомендуете создать холст для каждого текстового поля, которое я хочу иметь? E.g. У Ebonite есть свой Canvas, Gamebreaker 2 имеет свой собственный холст и т. Д. – Bwill