Advertisement
murfel

Генератор AceCard.pl

Jan 15th, 2014
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.40 KB | None | 0 0
  1. // В файл помещены как единичный, так и массовый генераторы кувертных карточек.
  2. // Пример работы можно увидеть на http://acecard.pl/
  3.  
  4. // Единичный генератор
  5. <?php
  6.  
  7. // Download TCPDF at http://www.tcpdf.org/
  8. // Include the main TCPDF library (search for installation path).
  9. require_once('tcpdf/tcpdf.php');
  10.  
  11. // create new PDF document
  12. $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
  13.  
  14. // set document information
  15. $pdf->SetCreator('AceCard.pl');
  16. $pdf->SetTitle('Кувертная карточка');
  17.  
  18. // unset header and footer
  19. $pdf->setPrintHeader(false);
  20. $pdf->setPrintFooter(false);
  21.  
  22. // ---------------------------------------------------------
  23.  
  24. // set default font subsetting mode
  25. $pdf->setFontSubsetting(true);
  26.  
  27. // add fonts to PDF
  28. $LiberationSerif = $pdf->addTTFfont('LiberationSerif-Regular.ttf', 'TrueTypeUnicode', '', 32);
  29. $LiberationSerif = $pdf->addTTFfont('LiberationSerif-Bold.ttf', 'TrueTypeUnicode', '', 32);
  30.  
  31. // ---------------------------------------------------------
  32.  
  33. //Write a name
  34. $FontS = 58; // начальный кегель
  35.  
  36. // начало напдиси имени
  37. $title = $_POST["title"];
  38. if(!empty($title)) { // если титул введен
  39.     $StartY = 164;
  40. }
  41. else { // если титул отсутствует
  42.     $StartY = 170;
  43. }
  44.  
  45.  
  46. while($FontS>1){
  47.     $pdf->AddPage();
  48.     $pdf->SetY($StartY);
  49.     $pdf->SetFont('LiberationSerif', 'B', $FontS);
  50.     $pdf->Write(0, $_POST["ship_name"], '', 0, 'C', false, 0, false, false, 0);
  51.    
  52.     if($StartY == ($pdf->GetY())) { // Если строка не выходит за рамки приличия,
  53.         break;          // оставить все как есть
  54.     }
  55.     else {
  56.         $FontS--; // Кегель уменьшается
  57.         $StartY+=0.35; // Точка начала печати надписи понижается
  58.         // Delete all pages
  59.         $NumPages = $pdf->getNumPages();
  60.         for($i=1; $i<=$NumPages; $NumPages--) {
  61.             $pdf->deletePage($i);
  62.         }
  63.     }  
  64. }
  65.  
  66.  
  67. // Write title
  68. // Calc font size
  69. $FontSt = min(30, $FontS);
  70.  
  71. while($FontSt>1){
  72.     $pdf->SetY(189);
  73.     $pdf->SetFont('LiberationSerif', '', $FontSt);
  74.     //Write($h, $txt, $link='', $fill=0, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0)
  75.     $pdf->Write(0, $_POST["title"], '', 0, 'C', false, 0, false, false, 0);
  76.    
  77.     if(($pdf->GetY()) == 189) { // Если строка не выходит за рамки приличия,
  78.         break;          // оставить все как есть
  79.     }
  80.    
  81.     else {
  82.         $FontSt--; // Кегель уменьшается
  83.         // Delete all pages
  84.         $NumPages = $pdf->getNumPages();
  85.         for($i=1; $i<=$NumPages; $NumPages--) {
  86.             $pdf->deletePage($i);  
  87.         }
  88.         // And add removed name
  89.         $pdf->AddPage();
  90.         $pdf->SetY($StartY);
  91.         $pdf->SetFont('LiberationSerif', 'B', $FontS);
  92.         $pdf->Write(0, $_POST["ship_name"], '', 0, 'C', false, 0, false, false, 0);
  93.     }  
  94. }
  95.  
  96. //------------------------------------------
  97.  
  98. if($_POST["lines"] != "on") {
  99.     $pdf->line(0, 74.25, 210, 74.25);
  100.     $pdf->line(0, 148.5, 210, 148.5);
  101.     $pdf->line(0, 222.75, 210, 222.75);
  102. }
  103.  
  104. //$pdf->line(0, 185.625, 210, 185.625);
  105.  
  106. // Set promo text (if state it below "boring" some errors will ocure)
  107. if($_POST["promo"] != "on") {
  108.     $pdf->SetAutoPageBreak(false);
  109.     $pdf->SetFont('LiberationSerif', '', 12);
  110.     $pdf->SetX(10);
  111.     $pdf->Text(10, 286, 'Создано на AceCard.pl'); // x and y taked almost from the roof (I mean, ceiling)
  112. }
  113.  
  114. // Set inverse side text
  115. if($_POST["boring"] == "on") {
  116.  
  117.     $pdf->SetFont('LiberationSerif', '', 9);
  118.     // mirror-bottom line
  119.     $pdf->SetAutoPageBreak(true, 155);
  120.     $pdf->setY(74.25);
  121.     $pdf->setCellPaddings(0, 0, 0, 0);
  122.    
  123.    
  124.     if($_POST["feed"]!="") {
  125.         $pdf->resetColumns();
  126.         $pdf->setEqualColumns(3, 60);
  127.         $pdf->selectColumn();  
  128.         $pdf->StartTransform();
  129.         $pdf->MirrorP(105.1, 110);
  130.         $pdf->Write(0, $_POST["feed"], '', 0, 'L', true, 0, false, true, 0);
  131.         $pdf->StopTransform();
  132.         // Delete pages created because of long text
  133.         $NumPages = $pdf->getNumPages();
  134.         for($i=1; $i<$NumPages; $NumPages--) {
  135.             $pdf->deletePage($i+1);
  136.         }
  137.        
  138.     }
  139.     else {
  140.         $pdf->resetColumns();
  141.         $pdf->setEqualColumns(5, 100);
  142.         $pdf->selectColumn();          
  143.         $pdf->StartTransform();
  144.         $pdf->MirrorP(105.1, 110);
  145.         $pdf->Write(0, file_get_contents('uspenskiy.txt', false), '', 0, 'L', true, 0, false, true, 0);
  146.         $pdf->Write(0, 'Э. Упенский', '', 0, 'R', true, 0, false, true, 0);
  147.         $pdf->StopTransform();
  148.     }
  149.    
  150. }
  151.  
  152. //Close and output PDF document
  153. $pdf->Output('couvert_cart', 'I');
  154.  
  155. ?>
  156.  
  157.  
  158.  
  159.  
  160.  
  161. //---------------------------------------------------------------------------------------------------
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168. // Массовый генератор
  169. <?php
  170.  
  171. // Include the main TCPDF library (search for installation path).
  172. require_once('tcpdf/tcpdf.php');
  173.  
  174. // create new PDF document
  175. $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
  176.  
  177. // set document information
  178. $pdf->SetAuthor('AceCard.pl');
  179. $pdf->SetTitle('Кувертные карточки');
  180.  
  181. // unset header and footer
  182. $pdf->setPrintHeader(false);
  183. $pdf->setPrintFooter(false);
  184.  
  185. // ---------------------------------------------------------
  186.  
  187. // set default font subsetting mode
  188. $pdf->setFontSubsetting(true);
  189.  
  190. // add fonts to PDF
  191. $LiberationSerif = $pdf->addTTFfont('LiberationSerif-Regular.ttf', 'TrueTypeUnicode', '', 32);
  192. $LiberationSerif = $pdf->addTTFfont('LiberationSerif-Bold.ttf', 'TrueTypeUnicode', '', 32);
  193.  
  194. $prostynya = $_POST["prostynya"];
  195. $card = explode("\n", $prostynya);
  196. $max = count($card); // количество карточек для печати
  197.  
  198.  
  199. if ($_POST["type"] == "n") {
  200.     for ($i=0; $i<$max; $i++) {
  201.     $FontS[$i] = 58;
  202.     $StartY[$i] = 170;
  203.     }
  204.  
  205.     for ($i=0; $i<$max; $i++) {
  206.         while($FontS>1){
  207.             $pdf->AddPage();
  208.             $pdf->SetFont('LiberationSerif', 'B', $FontS[$i]);
  209.             $pdf->SetY($StartY[$i]);
  210.             $pdf->Write(0, $card[$i], '', 0, 'C', false, 0, false, false, 0);
  211.            
  212.             if($StartY[$i] == ($pdf->GetY())) { // Если строка не выходит за рамки приличия,
  213.                 $pdf->deletePage(1); // удалить страницу и перейти к следующей карточке
  214.                 break;
  215.             }
  216.             else {
  217.                 $FontS[$i]--; // Кегель уменьшается
  218.                 $StartY[$i]+=0.35; // Точка начала печати надписи понижается
  219.                 // Delete all pages
  220.                 $NumPages = $pdf->getNumPages();
  221.                 for($j=1; $j<=$NumPages; $NumPages--) {
  222.                     $pdf->deletePage($j);
  223.                 }
  224.             }
  225.         }
  226.     }
  227.    
  228.     $feed = $_POST["feed"];
  229.     $feedset = !empty($feed);
  230.     $lines = $_POST["lines"] != "no";
  231.     $promo = $_POST["promo"] != "no";
  232.     for($i=0; $i<$max; $i++) {  // Вывод всех карточек с просчитанным кеглем и началом строки
  233.         $pdf->AddPage();
  234.         $pdf->SetAutoPageBreak(false);
  235.         $pdf->SetFont('LiberationSerif', 'B', $FontS[$i]);
  236.         $pdf->SetY($StartY[$i]);
  237.         $pdf->Write(0, $card[$i], '', 0, 'C', false, 0, false, false, 0);          
  238.        
  239.         if($lines) {
  240.             $pdf->line(0, 74.25, 210, 74.25);
  241.             $pdf->line(0, 148.5, 210, 148.5);
  242.             $pdf->line(0, 222.75, 210, 222.75);
  243.         }
  244.        
  245.         if($promo) {
  246.             $pdf->SetAutoPageBreak(false);
  247.             $pdf->SetFont('LiberationSerif', '', 12);
  248.             $pdf->SetX(10);
  249.             $pdf->Text(10, 286, 'Создано на AceCard.pl');
  250.         }
  251.        
  252.         if($feedset) {         
  253.             $pdf->SetFont('LiberationSerif', '', 9);
  254.             $pdf->SetAutoPageBreak(true, 155);
  255.             $pdf->setY(74.25);
  256.             $pdf->setCellPaddings(0, 0, 0, 0);
  257.             $pdf->resetColumns();
  258.             $pdf->setEqualColumns(3, 60);
  259.             $pdf->selectColumn();  
  260.             $pdf->StartTransform();
  261.             $pdf->MirrorP(105.1, 110);
  262.             $pdf->Write(0, $feed, '', 0, 'L', true, 0, false, true, 0);
  263.             $pdf->StopTransform();
  264.             $pdf->resetColumns();
  265.             $pdf->selectColumn();
  266.            
  267.             while($pdf->getNumPages() != ($i+1)) {
  268.                 $pdf->deletePage($pdf->getNumPages());
  269.             }          
  270.         }  
  271.    
  272.     }
  273. }
  274.  
  275.  
  276. else {
  277.     for($i=0; $i<$max; $i+=2) {
  278.         $FontS[$i] = 58;
  279.         if(empty($card[$i+1])) $StartY[$i] = 170;
  280.         else $StartY[$i] = 164;
  281.     }
  282.    
  283.     for($i=0; $i<$max; $i+=2) {
  284.         while($FontS>1){
  285.             $pdf->AddPage();
  286.             $pdf->SetFont('LiberationSerif', 'B', $FontS[$i]);
  287.             $pdf->SetY($StartY[$i]);
  288.             $pdf->Write(0, $card[$i], '', 0, 'C', false, 0, false, false, 0);
  289.            
  290.             if($StartY[$i] == ($pdf->GetY())) { // Если строка не выходит за рамки приличия,
  291.                 $pdf->deletePage(1); // удалить страницу и перейти к следующей карточке
  292.                 break;
  293.             }
  294.             else {
  295.                 $FontS[$i]--; // Кегель уменьшается
  296.                 $StartY[$i]+=0.35; // Точка начала печати надписи понижается
  297.                 // Delete all pages
  298.                 $NumPages = $pdf->getNumPages();
  299.                 for($j=1; $j<=$NumPages; $NumPages--) {
  300.                     $pdf->deletePage($j);
  301.                 }
  302.             }
  303.         }
  304.     }
  305.  
  306.     $feed = $_POST["feed"];
  307.     $feedset = !empty($feed);
  308.     $lines = $_POST["lines"] != "no";
  309.     $promo = $_POST["promo"] != "no";
  310.     for($i=0; $i<$max; $i+=2) { // Вывод всех карточек с просчитанным кеглем и началом строки
  311.         $pdf->AddPage();
  312.         $pdf->SetAutoPageBreak(false);
  313.         $pdf->SetFont('LiberationSerif', 'B', $FontS[$i]);
  314.         $pdf->SetY($StartY[$i]);
  315.         $pdf->Write(0, $card[$i], '', 0, 'C', false, 0, false, false, 0);          
  316.         $pdf->SetY(189);
  317.         $pdf->SetFont('LiberationSerif', '', min(30, $FontS[$i]));
  318.         $pdf->Write(0, $card[$i+1], '', 0, 'C', false, 0, false, false, 0);
  319.        
  320.         if($lines) {
  321.             $pdf->line(0, 74.25, 210, 74.25);
  322.             $pdf->line(0, 148.5, 210, 148.5);
  323.             $pdf->line(0, 222.75, 210, 222.75);
  324.         }
  325.        
  326.         if($promo) {
  327.             $pdf->SetAutoPageBreak(false);
  328.             $pdf->SetFont('LiberationSerif', '', 12);
  329.             $pdf->SetX(10);
  330.             $pdf->Text(10, 286, 'Создано на AceCard.pl');
  331.         }
  332.        
  333.         if($feedset) {         
  334.             $pdf->SetFont('LiberationSerif', '', 9);
  335.             $pdf->SetAutoPageBreak(true, 155);
  336.             $pdf->setY(74.25);
  337.             $pdf->setCellPaddings(0, 0, 0, 0);
  338.             $pdf->resetColumns();
  339.             $pdf->setEqualColumns(3, 60);
  340.             $pdf->selectColumn();  
  341.             $pdf->StartTransform();
  342.             $pdf->MirrorP(105.1, 110);
  343.             $pdf->Write(0, $feed, '', 0, 'L', true, 0, false, true, 0);
  344.             $pdf->StopTransform();
  345.             $pdf->resetColumns();
  346.             $pdf->selectColumn();
  347.            
  348.             while($pdf->getNumPages() != ($i/2+1)) {
  349.                 $pdf->deletePage($pdf->getNumPages());
  350.             }          
  351.         }  
  352.    
  353.     }
  354. }
  355.  
  356. $pdf->Output('couvert_cards', 'I');
  357.  
  358. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement