166 lines
3.7 KiB
Plaintext
Executable File
166 lines
3.7 KiB
Plaintext
Executable File
CREATE OR REPLACE package pdf_builder_pkg
|
|
as
|
|
|
|
/*
|
|
|
|
Purpose: Package to generate PDF files
|
|
|
|
Remarks: By Anton Scheffer, see http://technology.amis.nl/blog/8650/as_pdf-generating-a-pdf-document-with-some-plsql
|
|
|
|
Who Date Description
|
|
------ ---------- -------------------------------------
|
|
ASC 20.10.2010 Created
|
|
|
|
*/
|
|
|
|
--
|
|
type tp_settings is record
|
|
( page_width number
|
|
, page_height number
|
|
, margin_left number
|
|
, margin_right number
|
|
, margin_top number
|
|
, margin_bottom number
|
|
, encoding varchar2(100)
|
|
, current_font pls_integer
|
|
, current_fontsizePt pls_integer
|
|
, x number
|
|
, y number
|
|
, page_nr pls_integer
|
|
);
|
|
--
|
|
procedure init;
|
|
--
|
|
function get_pdf
|
|
return blob;
|
|
--
|
|
procedure save_pdf
|
|
( p_dir in varchar2 := 'MY_DIR'
|
|
, p_filename in varchar2 := 'my.pdf'
|
|
);
|
|
--
|
|
procedure show_pdf;
|
|
--
|
|
function conv2user_units( p_value in number, p_unit in varchar2 )
|
|
return number;
|
|
--
|
|
procedure set_format
|
|
( p_format in varchar2 := 'A4'
|
|
, p_orientation in varchar2 := 'PORTRAIT'
|
|
);
|
|
--
|
|
procedure set_pagesize
|
|
( p_width in number
|
|
, p_height in number
|
|
, p_unit in varchar2 := 'cm'
|
|
);
|
|
--
|
|
procedure set_margins
|
|
( p_top in number := 3
|
|
, p_left in number := 1
|
|
, p_bottom in number := 4
|
|
, p_right in number := 1
|
|
, p_unit in varchar2 := 'cm'
|
|
);
|
|
--
|
|
function get_settings
|
|
return tp_settings;
|
|
--
|
|
procedure new_page;
|
|
--
|
|
procedure set_font
|
|
( p_family in varchar2
|
|
, p_style in varchar2 := 'N'
|
|
, p_fontsizePt in pls_integer := null
|
|
, p_encoding in varchar2 := 'WINDOWS-1252'
|
|
);
|
|
--
|
|
procedure add2page( p_txt in nclob );
|
|
--
|
|
procedure put_txt( p_x in number, p_y in number, p_txt in nclob );
|
|
--
|
|
function string_width( p_txt in nclob )
|
|
return number;
|
|
--
|
|
procedure write
|
|
( p_txt in nclob
|
|
, p_x in number := null
|
|
, p_y in number := null
|
|
, p_line_height in number := null
|
|
, p_start in number := null -- left side of the available text box
|
|
, p_width in number := null -- width of the available text box
|
|
, p_alignment in varchar2 := null
|
|
);
|
|
--
|
|
procedure set_color( p_rgb in varchar2 := '000000' );
|
|
--
|
|
procedure set_color
|
|
( p_red in number := 0
|
|
, p_green in number := 0
|
|
, p_blue in number := 0
|
|
);
|
|
--
|
|
procedure set_bk_color( p_rgb in varchar2 := 'ffffff' );
|
|
--
|
|
procedure set_bk_color
|
|
( p_red in number := 255
|
|
, p_green in number := 255
|
|
, p_blue in number := 255
|
|
);
|
|
--
|
|
procedure horizontal_line
|
|
( p_x in number
|
|
, p_y in number
|
|
, p_width in number
|
|
, p_line_width in number := 0.5
|
|
, p_line_color in varchar2 := '000000'
|
|
);
|
|
--
|
|
procedure vertical_line
|
|
( p_x in number
|
|
, p_y in number
|
|
, p_height in number
|
|
, p_line_width in number := 0.5
|
|
, p_line_color in varchar2 := '000000'
|
|
);
|
|
--
|
|
procedure rect
|
|
( p_x in number
|
|
, p_y in number
|
|
, p_width in number
|
|
, p_height in number
|
|
, p_line_color in varchar2 := null
|
|
, p_fill_color in varchar2 := null
|
|
, p_line_width in number := 0.5
|
|
);
|
|
--
|
|
procedure put_image
|
|
( p_dir in varchar2
|
|
, p_file_name in varchar2
|
|
, p_x in number
|
|
, p_y in number
|
|
, p_width in number := null
|
|
, p_height in number := null
|
|
);
|
|
--
|
|
procedure put_image
|
|
( p_url in varchar2
|
|
, p_x in number
|
|
, p_y in number
|
|
, p_width in number := null
|
|
, p_height in number := null
|
|
);
|
|
--
|
|
procedure put_image
|
|
( p_img in blob
|
|
, p_x in number
|
|
, p_y in number
|
|
, p_width in number := null
|
|
, p_height in number := null
|
|
);
|
|
--
|
|
|
|
end pdf_builder_pkg;
|
|
/
|
|
|