+++ /dev/null
-package C4::Barcodes::PrinterConfig;
-
-# This file is part of Koha.
-#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-
-use strict;
-#use warnings; FIXME - Bug 2505
-use vars qw($VERSION @EXPORT);
-
-use PDF::API2;
-use PDF::API2::Page;
-
-BEGIN {
- # set the version for version checking
- $VERSION = 3.07.00.049;
- require Exporter;
- @EXPORT = qw(&labelsPage &getLabelPosition setPositionsForX setPositionsForY);
-}
-
-=head1 NAME
-
-C4::Barcodes::PrinterConfig - Koha module dealing with labels in a PDF.
-
-=head1 SYNOPSIS
-
-use C4::Barcodes::PrinterConfig;
-
-=head1 DESCRIPTION
-
-This package is used to deal with labels in a pdf file. Giving some parameters,
-this package contains several functions to handle every label considering the
-environment of the pdf file.
-
-=head1 FUNCTIONS
-
-=head2 my @positionsForX;
-
-Takes all the X positions of the pdf file.
-
-=head2 my @positionsForY;
-
-Takes all the Y positions of the pdf file.
-
-=head2 my $firstLabel = 1;
-
-Test if the label passed as a parameter is the first label to be printed into the pdf file.
-
-=head2 setPositionsForX
-
- C4::Barcodes::PrinterConfig::setPositionsForX($marginLeft, $labelWidth, $columns, $pageType);
-
-Calculate and stores all the X positions across the pdf page.
-
-C<$marginLeft> Indicates how much left margin do you want in your page type.
-
-C<$labelWidth> Indicates the width of the label that you are going to use.
-
-C<$columns> Indicates how many columns do you want in your page type.
-
-C<$pageType> Page type to print (eg: a4, legal, etc).
-
-=cut
-
-# Globals used by the functions
-my @positionsForX;
-my @positionsForY;
-my $firstLabel = 1;
-
-sub setPositionsForX {
- my ($marginLeft, $labelWidth, $columns, $pageType) = @_;
- my $defaultDpi = 72/25.4; # By default we know 25.4 mm -> 1 inch -> 72 dots per inch
- my $whereToStart = ($marginLeft + ($labelWidth/2));
- my $firstLabel = $whereToStart*$defaultDpi;
- my $spaceBetweenLabels = $labelWidth*$defaultDpi;
- my @positions;
- for (my $i = 0; $i < $columns ; $i++) {
- push @positions, ($firstLabel+($spaceBetweenLabels*$i));
- }
- @positionsForX = @positions;
-}
-
-=head2 setPositionsForY
-
- C4::Barcodes::PrinterConfig::setPositionsForY($marginBottom, $labelHeigth, $rows, $pageType);
-
-Calculate and stores all tha Y positions across the pdf page.
-
-C<$marginBottom> Indicates how much bottom margin do you want in your page type.
-
-C<$labelHeigth> Indicates the height of the label that you are going to use.
-
-C<$rows> Indicates how many rows do you want in your page type.
-
-C<$pageType> Page type to print (eg: a4, legal, etc).
-
-=cut
-
-sub setPositionsForY {
- my ($marginBottom, $labelHeigth, $rows, $pageType) = @_;
- my $defaultDpi = 72/25.4; # By default we know 25.4 mm -> 1 inch -> 72 dots per inch
- my $whereToStart = ($marginBottom + ($labelHeigth/2));
- my $firstLabel = $whereToStart*$defaultDpi;
- my $spaceBetweenLabels = $labelHeigth*$defaultDpi;
- my @positions;
- for (my $i = 0; $i < $rows; $i++) {
- unshift @positions, ($firstLabel+($spaceBetweenLabels*$i));
- }
- @positionsForY = @positions;
-}
-
-=head2 getLabelPosition
-
- (my $x, my $y, $pdfObject, $pageObject, $gfxObject, $textObject, $coreObject, $labelPosition) =
- C4::Barcodes::PrinterConfig::getLabelPosition($labelPosition, $pdfObject, $page, $gfx, $text, $fontObject, $pageType);
-
-Return the (x,y) position of the label that you are going to print considering the environment.
-
-C<$labelPosition> Indicates which label positions do you want to place by x and y coordinates.
-
-C<$pdfObject> The PDF object in use.
-
-C<$page> The page in use.
-
-C<$gfx> The gfx resource to handle with barcodes objects.
-
-C<$text> The text resource to handle with text.
-
-C<$fontObject> The font object
-
-C<$pageType> Page type to print (eg: a4, legal, etc).
-
-=cut
-
-sub getLabelPosition {
- my ($labelNum, $pdf, $page, $gfxObject, $textObject, $fontObject, $pageType) = @_;
- my $indexX = $labelNum % @positionsForX;
- my $indexY = int($labelNum / @positionsForX);
- # Calculates the next label position and return that label number
- my $nextIndexX = $labelNum % @positionsForX;
- my $nextIndexY = $labelNum % @positionsForY;
- if ($firstLabel) {
- $page = $pdf->page;
- $page->mediabox($pageType);
- $gfxObject = $page->gfx;
- $textObject = $page->text;
- $textObject->font($fontObject, 7);
- $firstLabel = 0;
- } elsif (($nextIndexX == 0) && ($nextIndexY == 0)) {
- $page = $pdf->page;
- $page->mediabox($pageType);
- $gfxObject = $page->gfx;
- $textObject = $page->text;
- $textObject->font($fontObject, 7);
- }
- $labelNum = $labelNum + 1;
- if ($labelNum == (@positionsForX*@positionsForY)) {
- $labelNum = 0;
- }
- return ($positionsForX[$indexX], $positionsForY[$indexY], $pdf, $page, $gfxObject, $textObject, $fontObject, $labelNum);
-}
-
-=head2 labelsPage
-
- my @labelTable = C4::Barcodes::PrinterConfig::labelsPage($rows, $columns);
-
-This function will help you to build the labels panel, where you can choose
-wich label position do you want to start the printer process.
-
-C<$rows> Indicates how many rows do you want in your page type.
-
-C<$columns> Indicates how many rows do you want in your page type.
-
-=cut
-
-sub labelsPage{
- my ($rows, $columns) = @_;
- my @pageType;
- my $tagname = 0;
- my $labelname = 1;
- my $check;
- for (my $i = 1; $i <= $rows; $i++) {
- my @column;
- for (my $j = 1; $j <= $columns; $j++) {
- my %cell;
- if ($tagname == 0) {
- $check = 'checked';
- } else {
- $check = '';
- }
- %cell = (check => $check,
- tagname => $tagname,
- labelname => $labelname);
- $tagname = $tagname + 1;
- $labelname = $labelname + 1;
- push @column, \%cell;
- }
- my %columns = (columns => \@column);
- push @pageType, \%columns;
- }
- return @pageType;
-}
-
-1;
-
-__END__
-
-=head1 AUTHOR
-
-Koha Physics Library UNLP <matias_veleda@hotmail.com>
-
-=cut