Что нового

Работа с PDF. Вопросы по pdf_au3_haru.au3 - UDF

pvnn

Осваивающий
Сообщения
305
Репутация
32
Всем привет!
В свое время WSWR сделал pdf_au3_haru.au3 - UDF для работы с libharu - библиотекой создания PDF-файлов

http://autoit-script.ru/index.php?topic=20016.new#new

Интересно, что в прилагаемом примере у меня Adobe Reader 11 некорректно отображает кирилицу (квадратики), хотя в PDFMaster все отображается корректно. Проблему решил загрузкой шрифта:
Код:
$txt_font = AU3_HPDF_GetFileFont('C:\Windows\Fonts\times.ttf', $CP1251)


Вопрос. Как можно изменить цвет шрифта и начертание шрифта (bold,Italic итд)?

Пробовал менять цвет так, но здесь происходит обрамление цветом (черный шрифт обтекается красным):
Код:
#include <pdf_au3_haru.au3>
; ВНИМАНИЕ: Координаты для рисования считаются от ЛЕВОГО НИЖНЕГО края

Global $pdf, $page

$pdf = AU3_HPDF_New() ; Создаем новый PDF-документ

$page = AU3_HPDF_AddPage() ; Добавляем новую страницу
AU3_HPDF_Page_SetSize($page, $HPDF_PAGE_SIZE_A4, $HPDF_PAGE_LANDSCAPE) ; Устанавливаем размер страницы А4, ориентация - альбомная

$doc_height = AU3_HPDF_Page_GetHeight($page) ; Получаем высоту страницы
$doc_width = AU3_HPDF_Page_GetWidth($page); Получаем ширину страницы


AU3_HPDF_Page_BeginText ($page) ; Начинаем вывод текста
AU3_HPDF_Page_SetRGBStroke($page, 255, 0, 0) ; Устанавливаем цвет линий прямоугольника (красный)
$txt_font = AU3_HPDF_GetFileFont('C:\Windows\Fonts\times.ttf', $CP1251); Загружаем шрифт из файла
AU3_HPDF_Page_SetFontAndSize($page, $txt_font, 14) ; Устанавливаем размер шрифта
AU3_HPDF_Page_MoveTextPos($page, 100, $doc_height - 50) ; Изменяем текущую позицию вывода текста
AU3_HPDF_Page_SetTextRenderingMode($page,$HPDF_FILL_THEN_STROKE) ; Устанавливаем режим вывода текста -  $HPDF_FILL (обычный), $HPDF_STROKE (только обрамление), $HPDF_FILL_THEN_STROKE (обрамление цветом поверх)
AU3_HPDF_Page_ShowText ($page, 'Первая строка текста') ; Выводим текст в текущую позицию

AU3_HPDF_SaveToFile("test0") ; Сохранение PDF-документа, расширение может добавляться автоматически
AU3_HPDF_Free() ; Освобождение ресурсов
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
pvnn
Я уж еле вспомнил, что делал такую библиотеку)

По начертанию шрифта - начертания шрифта хранятся в разных файлах, например,
полужирный - "\Fonts\timesbd.ttf"
курсив - "\Fonts\timesi.ttf"
и т.д.
Брать шрифт, добавлять к нему атрибуты начертания и выводить как графику по-простому не получится, для этого на компилируемых языках существуют специальные библиотеки. Можно перебрать все файлы шрифтов на компьютере, получить их атрибуты и расположение, потом использовать.

А так получает полужирный красный текст:
Код:
#include <pdf_au3_haru.au3>
; ВНИМАНИЕ: Координаты для рисования считаются от ЛЕВОГО НИЖНЕГО края

Global $pdf, $page

$pdf = AU3_HPDF_New() ; Создаем новый PDF-документ

$page = AU3_HPDF_AddPage() ; Добавляем новую страницу
AU3_HPDF_Page_SetSize($page, $HPDF_PAGE_SIZE_A4, $HPDF_PAGE_LANDSCAPE) ; Устанавливаем размер страницы А4, ориентация - альбомная

$doc_height = AU3_HPDF_Page_GetHeight($page) ; Получаем высоту страницы
$doc_width = AU3_HPDF_Page_GetWidth($page); Получаем ширину страницы


AU3_HPDF_Page_BeginText ($page) ; Начинаем вывод текста
;AU3_HPDF_Page_SetRGBStroke($page, 255, 0, 0) ; Устанавливаем цвет линий прямоугольника (красный)

$txt_font = AU3_HPDF_GetFileFont('C:\Windows\Fonts\timesbd.ttf', $CP1251); Загружаем шрифт из файла timesbd.ttf - Times полужирный

AU3_HPDF_Page_SetFontAndSize($page, $txt_font, 14) ; Устанавливаем размер шрифта
AU3_HPDF_Page_MoveTextPos($page, 100, $doc_height - 50) ; Изменяем текущую позицию вывода текста

AU3_HPDF_Page_SetRGBFill($page, 255, 0, 0); устанавливаем цвет ЗАПОЛНЕННОГО текста
AU3_HPDF_Page_SetTextRenderingMode($page,$HPDF_FILL) ; Устанавливаем режим вывода текста -  $HPDF_FILL (обычный), $HPDF_STROKE (только обрамление), $HPDF_FILL_THEN_STROKE (обрамление цветом поверх)


AU3_HPDF_Page_ShowText ($page, 'Первая строка текста') ; Выводим текст в текущую позицию

AU3_HPDF_SaveToFile("test0") ; Сохранение PDF-документа, расширение может добавляться автоматически
AU3_HPDF_Free() ; Освобождение ресурсов
 
Автор
P

pvnn

Осваивающий
Сообщения
305
Репутация
32
WSWR, спасибо за ответ.
Тема решена
 
Верх