Что нового

pdf_au3_haru.au3 - UDF для работы с libharu - библиотекой создания PDF-файлов

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AutoIt: 3.3.8.1+
Версия: 0.3.2

Категория: Графика, Данные, Разное

Описание:
Набор au3-функций для работы с libharu - библиотекой для создания PDF-документов libharu.org
UDF использует libharu, скомпилированую в динамическую библиотеку pdf_au3_haru.dll (должна находится рядом с UDF)
UDF позволяет создавать многостраничные PDF-документы, включающие текст, изображения, графические примитивы.

Код/Пример:
Код:
#include <pdf_au3_haru.au3>

; ВНИМАНИЕ: Координаты для рисования считаются от ЛЕВОГО НИЖНЕГО края

Global $pdf, $page


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

; Страница 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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

;AU3_HPDF_Page_SetWidth($page, 5000)  ; Устанавливаем ширину страницы 5000 точек
;AU3_HPDF_Page_SetHeight($page, 5000) ; Устанавливаем высоту страницы 5000 точек

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


AU3_HPDF_Page_SetLineWidth($page, 0.5) ; Устанавливаем толщину линий прямоугольника
AU3_HPDF_Page_SetRGBStroke($page, 255, 0, 0) ; Устанавливаем цвет линий прямоугольника (красный, по умолчанию - черный)

AU3_HPDF_Page_Rectangle($page, 50, 50, $doc_width - 100, $doc_height - 110) ; Рисуем прямоугольник-рамку
AU3_HPDF_Page_Stroke($page) ; Заканчиваем рисование фигур

$page_title = 'Тестовый документ PDF'

$def_font = AU3_HPDF_GetFont('Courier-BoldOblique', $CP1251) ; Загружаем шрифт
AU3_HPDF_Page_SetFontAndSize($page, $def_font, 35) ; Устанавливаем размер шрифта
$tw = AU3_HPDF_Page_TextWidth($page, $page_title) ; Получаем длину строки текста
AU3_HPDF_Page_BeginText($page) ; Начинаем вывод текста
AU3_HPDF_Page_TextOut($page, ($doc_width - $tw) / 2, $doc_height - 50, $page_title) ; Выводим текст по центру сверху
AU3_HPDF_Page_EndText($page) ; Заканчиваем вывод текста


AU3_HPDF_Page_BeginText ($page) ; Начинаем вывод текста

$txt_font = AU3_HPDF_GetFont('Courier', $CP1251) ; Загружаем шрифт

AU3_HPDF_Page_SetFontAndSize ($page, $txt_font, 20) ; Устанавливаем размер шрифта
AU3_HPDF_Page_MoveTextPos($page, 60, $doc_height - 200) ; Изменяем текущую позицию вывода текста
AU3_HPDF_Page_ShowText ($page, 'Первая строка текста') ; Выводим текст в текущую позицию

AU3_HPDF_Page_MoveTextPos ($page, 0, -20) ; Изменяем текущую позицию вывода текста
AU3_HPDF_Page_SetFontAndSize ($page, $txt_font, 13) ; Устанавливаем размер шрифта
AU3_HPDF_Page_ShowText ($page, 'Вторая строка текста') ; Выводим текст в текущую позицию

AU3_HPDF_Page_MoveTextPos ($page, 0, -20) ; Изменяем текущую позицию вывода текста
AU3_HPDF_Page_SetFontAndSize ($page, $txt_font, 8) ; Устанавливаем размер шрифта
AU3_HPDF_Page_ShowText ($page, 'Третья строка текста') ; Выводим текст в текущую позицию


$angle1 = 90 ; Угол поворота текста в градусах
$rad1 = $angle1 / 180 * 3.141592 ; Перевод в радианы
AU3_HPDF_Page_SetFontAndSize ($page, $txt_font, 30) ; Устанавливаем размер шрифта

$txt_font = AU3_HPDF_GetFileFont(AU3_HPDF_Get_font_path("Times New Roman", 1, 1, ""), $CP1251); Загружаем шрифт из файла (файл находим с помощью функции AU3_HPDF_Get_font_path)


AU3_HPDF_Page_SetTextMatrix ($page, cos($rad1), sin($rad1), -sin($rad1), Cos($rad1), $doc_width-100, $doc_height - 500) ; Поворачиваем текст
AU3_HPDF_Page_SetTextRenderingMode($page,$HPDF_FILL) ; Устанавливаем режим вывода текста - $HPDF_FILL
AU3_HPDF_Page_ShowText ($page, 'Вертикальный текст'); Выводим текст в текущую позицию


$angle1 = 30 ; Угол поворота текста в градусах
$rad1 = $angle1 / 180 * 3.141592 ; Перевод в радианы
AU3_HPDF_Page_SetFontAndSize ($page, $txt_font, 20) ; Устанавливаем размер шрифта
AU3_HPDF_Page_SetTextMatrix ($page, cos($rad1), sin($rad1), -sin($rad1), Cos($rad1), $doc_width-700, $doc_height - 500) ; Поворачиваем текст
AU3_HPDF_Page_SetTextRenderingMode($page,$HPDF_FILL_THEN_STROKE) ; Устанавливаем режим вывода текста - $HPDF_FILL_THEN_STROKE
AU3_HPDF_Page_ShowText ($page, 'Текст с наклоном 30 градусов'); Выводим текст в текущую позицию
AU3_HPDF_Page_EndText ($page) ; Заканчиваем вывод текста


AU3_HPDF_Page_SetTextRenderingMode($page,$HPDF_FILL) ; Устанавливаем режим вывода текста - $HPDF_FILL (обычный)

; Рисуем номер страницы
AU3_HPDF_Page_SetFontAndSize($page, $txt_font, 10) ; Устанавливаем размер шрифта
$tw = AU3_HPDF_Page_TextWidth($page, 'Страница 1') ; Получаем длину строки текста
AU3_HPDF_Page_BeginText($page) ; Начинаем вывод текста
AU3_HPDF_Page_TextOut($page, ($doc_width - $tw) / 2, 70, 'Страница 1') ; Выводим текст по центру снизу
AU3_HPDF_Page_EndText($page) ; Заканчиваем вывод текста


;$image = AU3_HPDF_LoadJpegImageFromFile('1.jpg') ; загружаем изображение JPG
;AU3_HPDF_Page_DrawImage ($page, $image, 100, 300, AU3_HPDF_Image_GetWidth($image), AU3_HPDF_Image_GetHeight ($image)) ; рисуем загруженное изображение


; Страница 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$page2 = AU3_HPDF_AddPage() ; Добавляем новую страницу

AU3_HPDF_Page_SetSize($page2, $HPDF_PAGE_SIZE_A4, $HPDF_PAGE_LANDSCAPE) ; Устанавливаем размер страницы А4, ориентация - альбомная
;AU3_HPDF_Page_SetWidth($page, 5000)  ; Устанавливаем ширину страницы 5000 точек
;AU3_HPDF_Page_SetHeight($page, 5000) ; Устанавливаем высоту страницы 5000 точек

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

AU3_HPDF_Page_SetLineWidth($page2, 5) ; Устанавливаем толщину линий - 5
AU3_HPDF_Page_SetRGBStroke($page2, 99, 0, 198) ; Устанавливаем цвет линий - фиолетовый

AU3_HPDF_Page_Circle($page2, 200, 250, 70) ; Рисуем окружность
AU3_HPDF_Page_Stroke($page2) ; Заканчиваем рисование фигур

AU3_HPDF_Page_SetDash($page2,'8,7',2,1) ; Устанавливаем режим "пунктир" для линий графических фигур
AU3_HPDF_Page_SetLineWidth($page2, 5); Устанавливаем толщину линий - 5
AU3_HPDF_Page_SetRGBStroke($page2, 255, 255, 0); Устанавливаем цвет линий - желтый
AU3_HPDF_Page_Rectangle($page2, 50, 50, $doc_width2 - 500, $doc_height2 - 110); Рисуем прямоугольник-рамку
AU3_HPDF_Page_Stroke($page2); Заканчиваем рисование фигур

AU3_HPDF_Page_SetDash($page2,'8,7,3,2',1,1) ; Устанавливаем режим "пунктир" для линий графических фигур
AU3_HPDF_Page_SetLineWidth($page2, 1) ; Устанавливаем толщину линий - 1
AU3_HPDF_Page_SetRGBStroke($page2, 0, 0, 0) ; Устанавливаем цвет линий - черный
AU3_HPDF_Page_MoveTo($page2, 500, 500) ; Переносим текущую точку рисования в координаты 500,500
AU3_HPDF_Page_LineTo($page2, 0, 0) ; Рисуем линию из текущей точки рисования в координаты 0,0

AU3_HPDF_Page_Stroke($page2) ; Заканчиваем рисование фигур

; Рисуем номер страницы
AU3_HPDF_Page_SetFontAndSize($page2, $txt_font, 10) ; Устанавливаем размер шрифта
$tw = AU3_HPDF_Page_TextWidth($page2, 'Страница 2') ; Получаем длину строки текста
AU3_HPDF_Page_BeginText($page2) ; Начинаем вывод текста
AU3_HPDF_Page_TextOut($page2, ($doc_width2 - $tw) / 2, 70, 'Страница 2') ; Выводим текст по центру снизу
AU3_HPDF_Page_EndText($page2) ; Заканчиваем вывод текста


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

Файл: Архив UDF+пример


История версий:
0.1:
- первая версия

0.2:
- добавлены функции:
AU3_HPDF_Page_TextRect
AU3_HPDF_Page_SetTextRenderingMode
AU3_HPDF_Page_SetTextRise
AU3_HPDF_Page_SetTextMatrix
AU3_HPDF_GetFileFont

0.3:
- добавлены функция:
AU3_HPDF_Get_font_path

0.3.1:
- обновлена функция:
AU3_HPDF_Get_font_path

0.3.2:
- обновлена функция:
AU3_HPDF_Get_font_path

Источник: autoit-script.ru
Автор(ы): WSWR
 
  • Like
Реакции: Norm
Автор
W

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Обновил UDF до 0.2
Добавлены функции:

AU3_HPDF_Page_TextRect (выводит текст в регион с указанными координатами с выравниванием)
AU3_HPDF_Page_SetTextRenderingMode (устанавливает тип вывода текста - обычный, с обрамлением, невидимый и т.д.)
AU3_HPDF_Page_SetTextRise (надстрочный текст и т.п.)
AU3_HPDF_Page_SetTextMatrix (необходима для вывода текста под углом)
AU3_HPDF_GetFileFont (позволяет загружать произвольные шрифты из файлов ttf)
Пример обновлен с учетом добавленных функций
 
Автор
W

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Обновлено до 0.3
Добавлена функция
AU3_HPDF_Get_font_path
Функция получает путь до файла шрифта ttf с указанными атрибутами (полужирный, курсив).
В дальнейшем этот шрифт можно загрузить и использовать для вывода текста в pdf.
 
Автор
W

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Обновлено до 0.3.1
Обновлена функция
AU3_HPDF_Get_font_path
Теперь функция может автоматически подставить путь до системной папки со шрифтами
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
А если у меня уже есть PDF документ, то как мне открыть документ чтобы можно было с ним работать с помощью данных функций?
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
Мне нужно открыть существующий pdf документ, в котором страница в обычном виде, и отправить на печать страницу в альбомном виде.
Как это сделать?
 
Автор
W

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Vovsla [?]
Мне нужно открыть существующий pdf документ, в котором страница в обычном виде, и отправить на печать страницу в альбомном виде.
Как это сделать?
С помощью данной библиотеки это невозможно, она предназначена для только для создания новых файлов
 
Автор
W

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Обновлено до 0.3.2
Обновлена функция
AU3_HPDF_Get_font_path
Исправлены ошибки
 

zghwelcome

Новичок
Сообщения
3
Репутация
1
nice job,i mark it,thanks


Добавлено:
Сообщение автоматически объединено:

Могу ли я поддерживать упрощенный китайский?
 

JuliaYarr

Новичок
Сообщения
3
Репутация
0
Задача следующая:

из программы получаем PDF файл, который автоматически сохраняется в AppData\Local\Temp

Так вот как сохранить этот файл с нужным именем (задана переменная) и в нужную папку?
 
Последнее редактирование:
Верх