Skapa ett pdf-dokument med php. Skapa ett PDF-dokument från ett PHP-skript med hjälp av FPDF-biblioteket



På jobbet behövde jag generera en PDF-rapport med använder php!
Igår, efter att ha plågat mig själv med den här saken och äntligen löst det, bestämde jag mig för att lägga ut alla mina tankar om denna fråga, så att den skulle lagras och inte glömmas senare, och kanske skulle den vara användbar för någon!

Så!
Att generera något sådant här är möjligt med två paket:
1. File_PHP - PEAR-paket
2. FPDF - något liknande, men med lite mer funktionalitet, IMHO!

Till slut valdes det andra alternativet!
Förresten, om du använder ett paket behöver du fortfarande ett andra, mer om det senare.
Att binda paket till själva manuset är inte alls svårt och är lika lätt som att skala päron! Ganska brett utbud av funktioner som gör att du kan göra vad som helst med din pdf!

Problemet uppstår när behovet uppstår att skriva med ryska bokstäver!
Först måste du konvertera ett TrueType-teckensnitt till ett metriskt teckensnitt, vilket är vad Adobe använder.
Detta görs med hjälp av programmet ttf2pt1. Du kan enkelt ladda ner den på internet! Programmet löper från kommandorad! För att generera ett metriskt teckensnitt med tillägget amf, skriv in kommandoraden ttf2pt1 -Ett font.ttf-namn för det genererade teckensnittet. En fil visas med filtillägget afm. I mitt fall arbetade jag med arial-fonten. Därför var laget så här ttf2pt1 -A arial.ttf arial

PHP:
MakeFont (string fontfile , string afmfile [, string enc [, array patch [, string type ]]])
teckensnitt>

Var:
fontfile - TrueType-teckensnitt
afmfile - det afm-teckensnitt du skapade
enc - kodning (in I detta fall ange det kyrilliska alfabetet cp1251)
patch - valfri kodningsändring (ange inte)
typ - teckensnittstyp (TrueType som standard, så du behöver inte ange det)

Så vi skapar ett skript där vi inkluderar filen makefont/makefont.php i en katalog, säg typsnitt, så här:

PHP:
MakeFont ("arial.ttf", "arial.afm", "cp1251" );
teckensnitt>

Och låt oss lansera det! Därefter genereras två filer som beskriver skriptet!
Dessa är arial.php och arial.z
I detta fall nyckelfil för vårt arbete är arial.php, som har många intressanta saker!

Vi lämnar det hela på servern där våra skript kommer att fungera!
Med hjälp av FPDF-kommandon (som finns i dokumentationen) skapar vi en pdf-fil, men för att kunna koppla de fonter vi skapade till den måste vi anropa FPDF addfont()-funktionen.

Nämligen så här:

PHP:
$pdf = ny FPDF();
$pdf -> addfont ("arial", "", "font/arial.php" );
teckensnitt>

Som du redan förstått är det första argumentet för funktionen namnet på teckensnittet, det tredje är sökvägen till PHP-filen vi genererade! Det andra argumentet är typsnittsstilen (fet, kursiv, etc.). Men för att använda det måste du upprepa operationerna för att skapa teckensnittet i enlighet därmed för fetstil, kursiv stil, etc.!

Vi skriver lite rysk text och matar ut den till PDF! Och igen! Vi visar det ryska teckensnittet, men det är fult! Avståndet mellan bokstäverna är olika, allt är väldigt snett och ojämnt! Och allt för att filen arial.php med en beskrivning av skriptet på något sätt skapades felaktigt!
Låt oss se vad som finns i den:
Och den innehåller en array $cw, som ser ut som nyckel=>värde = tecken=>teckenstorlek! Och om du tittar noga, för det latinska alfabetet, för varje bokstav som finns olika storlek, men för det kyrilliska alfabetet samma 750! Du kan ändra dessa mått manuellt för att få ett vackert utseende!

Men jag kommer förmodligen att lägga upp den redan korrigerade storlekstabellen för arial regular!

Tack alla för er uppmärksamhet!
Ursäkta för klumpigheten i presentationen!
Men jag hoppas att innehållet är användbart!

jag har stor fil PDF som är en plankarta för byggnaden. Den har lager för alla kontorsmöbler, inklusive textfönster med sittplatser.

Finns det något sätt att göra detta via PHP? (Eller till och med Ruby eller Python om det är vad som behövs)

din ursprungliga begäran: "Jag har en stor PDF-fil som är en plankarta för en byggnad."

Jag är rädd att säga till dig att det kan vara svårare än du inser.

Anledningen till att den senast kända användningen av lib är för pdf-analys är smalot och problemet är känt för att vara med en stor fil.

Här är också en Lookig för den riktiga php lib för analysera pdf, utan minnestopp, som behöver php-konfiguration för att inaktivera minnesgränsen, som många "utvecklare" gör (vilket verkligen inte är praktiskt enligt min mening).

se detta meddelande för ytterligare information om smalots prestanda: https://github.com/smalot/pdfparser/issues/163

De låter dig öppna en PDF-fil och lägga till PHP-innehåll till den. Jag gissar att du också kan använda din funktionalitet för att söka igenom befintligt innehåll efter de värden du behöver.

Ett annat möjligt bibliotek är TCPDF: http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf

Uppdatera för att lägga till ett modernare bibliotek: PDF Parser

Hmm... inte precis php, men du kan anropa ett program från php för att konvertera pdf:en till en temporär html-fil och sedan analysera den resulterande filen med php. Jag gjorde något liknande för mitt projekt och det här är programmet jag använde:

Det som är coolt med programmet är att det kommer att spotta ut textelement i taggar

med absoluta positionskoordinater. Det verkar som att det är precis vad du försöker göra.

  • Översättning

De flesta webbtjänster exporterar data till olika format För vidare användning. Den här artikeln handlar om hur man exporterar data i pdf-format.
Även om många vet hur man gör detta kommer jag att beskriva kort för dem som inte vet.

PHP tillåter oss att generera pdf-filer i farten. FPDF är en gratis kod för php språk, som låter dig skapa dokument i pdf-format och utföra olika manipulationer med dem.

PDFlib
PHP API innehåller Ett stort antal funktioner för att arbeta med PDF, implementerade baserat på PDFlib. Trots detta är detta bibliotek inte gratis för kommersiellt bruk. Gratis version kallas PDFlib Lite och gratis för personlig användning, men den är begränsad i funktionalitet. För att kunna använda hela PDFlib-biblioteket måste du köpa en licens.

Varför FPDF?
Ett alternativ är att använda FPDF, en gratis klass som innehåller ett stort antal funktioner för att skapa och manipulera PDF-dokument. Nyckelord För i detta ögonblick- det är gratis. Du kan ladda ner, använda och ändra den här klassen som du vill. Förutom att det är gratis är det här biblioteket mycket enklare än PDFlib. För att använda PDFlib behöver du installera det som ett tillägg till PHP, medan FPDF kan inkluderas direkt i programmet.

Skapa PDF-dokument
För att komma igång måste du ladda ner FPDF-koden från FPDF:s webbplats och inkludera den i programmet. Till exempel så här


Nedan är ett exempel på hur du använder biblioteket för att skapa en enkel PDF.
Vi kommer att skapa ett nytt FPDF-objekt:

FPDF-konstruktören accepterar följande parametrar
  • Sidorientering (P eller L) stående eller liggande
  • Mått (pt, mm, cm eller in)
  • Dokumentstorlek (A3, A4, A5, Letter och Legal)
Därefter kommer vi att ställa in några dokumentegenskaper
$pdf->SetAuthor("Lana Kovacevic");
$pdf->SetTitle("FPDF handledning");

Sedan i i detta exempel vi använder samma typsnitt för hela dokumentet, vi ställer in det innan vi skapar sidan
$pdf->SetFont("Helvetica","B",20);
$pdf->SetTextColor(50,60,100);

Funktionen SetFont har 3 parametrar; teckensnittsnamn, stil och storlek. Vi använder Helvetica, fetstil och 20 poäng, vi kommer att använda detta för titeln på dokumentet.
Du kan använda vilket typsnitt som helst med AddFont-funktionen.
Med hjälp av SetTextColor-funktionen ställer vi in ​​teckensnittsfärgen för hela dokumentet. Färg kan representeras i RGB eller gråskala. I det här exemplet använder vi RGB-värden.
Nu när det viktigaste är gjort, låt oss börja skapa sidor.
$pdf->AddPage("P");
$pdf->SetDisplayMode("real","default");

Funktionen AddPage() kan skickas "P" eller "L" parametrar för att specificera sidorienteringen. Funktionen SetDisplayMode bestämmer hur sidan ska visas. Du kan definiera förstorings- och layoutalternativ. I exemplet använder vi 100 % förstoring och standardlayouten definierad i programmet som används för visning.

Nu när vi har en sida, låt oss infoga en bild i den för att göra sidan snyggare, och vi lägger också till en länk. Vi kommer att visa FPDF-logotypen med hjälp av Bildfunktion och skicka följande parametrar till den - filnamn, dimension och adress.

$pdf->Image("/logo.png",10,20,33,0," ","http://www.fpdf.org/");

För att lägga till en länk använd följande kommando
$pdf->Länk(10, 20, 33,33, "http://www.fpdf.org/");

Låt oss nu skapa en rubrik med en ram
$pdf->SetXY(50,20);
$pdf->SetDrawColor(50,60,100);
$pdf->Cell(100,10,"FPDF Tutorial",1,0,"C",0);

SetXY-funktionen ställer in x- och y-koordinaterna för den punkt där vi vill visa titeln. SetDrawColor ställer in kantfärgen med hjälp av RGB-värden. Efter det anropar vi cellfunktionen för att visa en rektangel med vår titeltext. Vi skickar följande parametrar till funktionen: bredd, höjd, text, kantlinje, ln, justering och utfyllnad. Gränsens värde är 0 - ingen gräns eller 1 för förekomsten av en gräns. För ln använder vi standardvärdet 0, "C" för att centrera texten och 0 för utfyllnadsparametern. Om vi ​​satte den sista parametern till 1 skulle vår rektangel fyllas i, värdet 0 skulle lämna den transparent.
Nu vill vi skriva in liten text i vårt dokument
$pdf->SetXY(10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,"Grattis! Du har skapat en PDF.");

Så återigen ställer vi in ​​x- och y-koordinaterna för textutmatningen, men nu kommer vi att minska teckenstorleken med SetFontSize. Skrivfunktionen skriver ut texten i vårt dokument. Parameter 5 anger höjden, det är bara vettigt när vi har många rader i vår text.
I slutet matar vi ut vårt resultat med hjälp av Output-funktionen.
$pdf->Output("exempel1.pdf","I");

Här specificerade vi filnamnet och utdataparametrarna, i det här fallet "I". Parametern "I" kommer att mata ut resultatet till webbläsaren.

Så hela texten:

require("fpdf.php");
//skapa ett FPDF-objekt
$pdf=ny FPDF();
//set dokumentegenskaper
$pdf->SetAuthor("Lana Kovacevic");
$pdf->SetTitle("FPDF handledning");
//set teckensnitt för hela dokumentet
$pdf->SetFont("Helvetica","B",20);
$pdf->SetTextColor(50,60,100);
//skapa en sida
$pdf->AddPage("P");
$pdf->SetDisplayMode(real,"default");
//infoga en bild och gör den till en länk
$pdf->Image("/logo.png",10,20,33,0," ","http://www.fpdf.org/");
//visa titeln med en ram runt den
$pdf->SetXY(50,20);
$pdf->SetDrawColor(50,60,100);
$pdf->Cell(100,10,"FPDF Tutorial",1,0,"C",0);
//Sätt x- och y-position för huvudtexten, reducera textstorlek och skriva innehåll
$pdf->SetXY(10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,"Grattis! Du har skapat en PDF.");
//Skriv ut dokumentet
$pdf->Output("exempel1.pdf","I");

Nu när vi har lärt oss hur man skapar dokument, låt oss se vad vi mer kan göra med FPDF. Exemplet nedan visar hur vi skapar toppen och botten (sidhuvud och sidfot :-)) i vårt dokument.

require("fpdf.php");
klass PDF utökar FPDF
{
function Header()
{
$this->Image("/logo.png",10,8,33);
$this->SetFont("Helvetica","B",15);
$this->SetXY(50, 10);
$this->Cell(0,10,"Detta är en rubrik",1,0,"C");
}
function Footer()
{
$this->SetXY(100,-15);
$this->SetFont("Helvetica","I",10);
$this->Write(5, "Detta är en sidfot");
}
}
$pdf=ny PDF();
$pdf->AddPage();
$pdf->Output("exempel2.pdf","D");

Som du kan se har vi skapat en barnklass genom att använda arv och skapa sidhuvuds- och sidfotsfunktionerna. Vi skapade sedan ett nytt objekt och la till sidan i dokumentet. AddPage-funktionen anropar automatiskt sidhuvuds- och sidfotsfunktionerna. Slutligen matar vi ut den resulterande informationen till en fil som heter example2.pdf med värdet "D". I det här fallet kommer webbläsaren att erbjuda att spara den här filen.

Så vi har lärt oss grunderna för att skapa PDF-dokument, för mer detaljerad information använda sig av

Förr eller senare uppstår frågan om att generera PDF-filer. Det är bekvämt och sidorna kan göras ganska vackra. Det finns många olika bibliotek för PHP, i det här fallet hade jag till uppgift att göra det i FPDF. Detta bibliotek, eller rättare sagt, klassen delas ut gratis och kan arbeta med olika typer kodningar, inklusive CP1251. Förmodligen är nackdelen med det här biblioteket bristen på UTF-stöd, men det finns ett separat lappat UFPDF-bibliotek, jag kommer inte att överväga det.

Du frågar säkert varför smärtan med det kyrilliska alfabetet? Låt oss bara säga att jag spenderade mycket tid på att leta efter hur jag skulle få rysk text att visa istället för klotter. Jag gjorde allt enligt manualer från officiella källor.
Så för att det ska finnas rysk text behöver vi typsnitt, jag använde Arial, Times New Roman, Verdana. Skapa en typsnittsmapp i ditt projekt. Placera de teckensnitt du behöver där. Nu måste vi konvertera dem till FPDF. Många webbplatser föreslår att du använder särskild nytta ttf2pt1.

Ttf2pt1 -a arial.ttf arial När den har sparats, låt oss kontrollera den i webbläsaren. Det skapar 2 filer, sedan måste du skapa php-fil och gör följande, eller snarare, det kommer att skapa en php-fil som innehåller information om typsnittet. Glöm inte att ställa in behörigheter på mappen där du ska generera typsnitt.

Jag har gjort allt detta mer än en gång. Och manuset ville inte fungera. Därefter hittade jag ett enklare sätt att konvertera typsnitt.
Låt oss gå http://fpdf.fruit-lab.de/index.php?id=3 till den här webbplatsen. Välj kodningen cp1251, bifoga sedan det teckensnitt vi behöver och klicka på Konvertera. Där kommer vi att vara intresserade av php, afm, z. Ladda ner dessa filer till mappen teckensnitt som vi skapade. Därefter måste du byta namn på .php.txt-filen till .php.
Sedan öppnar vi den här php-filen (från webbplatsen laddar vi ner den som .php.txt och byter namn på den). I det här fallet kommer vi att vara intresserade av teckensnittsnamnet ($name="ArialMT";). Nu har vi ett typsnitt och ett typsnittsnamn. Du kan börja skapa din egen PDF-generator. Vi skapar filen vi behöver, ansluter de nödvändiga biblioteken.

Define("FPDF_FONTPATH", __system_katalog__ ."API/font/"); // för säkerhets skull skrev jag hela sökvägen till biblioteket. require("/usr/share/php/fpdf/fpdf.php"); // deklarera klassen och klasskonstruktören, i det här fallet har jag ett landskapsark $pdf=new FPDF("L"); //du måste ansluta teckensnittet genom att ange teckensnittsnamn och filnamn. $pdf->AddFont("ArialMT","","119379869a251bdd6a14438b3c5514f2_arial.php"); $pdf->AddPage(); // välj typsnitt för texten. $pdf->SetFont("ArialMT","",35); $pdf->Cell(40,10,"Rysk text!"); $pdf->Output();

Jag tillbringade det mesta av min tid på grund av ett fel som uppstod: "FPDF-fel: Odefinierat teckensnitt: arialmt B Det orsakades förmodligen av felaktig teckensnittskonvertering när du använder MakeFont eller använder en felaktig parameter, till exempel uppstår ett fel när parameter 2." matchar inte SetFont eller vice versa.

// Fel i detta exempel:
$pdf->AddFont("ArialMT","","119379869a251bdd6a14438b3c5514f2_arial.php"); $pdf->SetFont("ArialMT","B",35); //Och den här också: $pdf->AddFont("ArialMT","B","119379869a251bdd6a14438b3c5514f2_arial.php"); $pdf->SetFont("ArialMT","",35); //works $pdf->AddFont("ArialMT","B","119379869a251bdd6a14438b3c5514f2_arial.php"); $pdf->SetFont("ArialMT","B",35);

Som det visade sig var felen på tomt utrymme, men jag är glad att jag kom på det, och jag hoppas att den här lilla artikeln hjälper dig att inte slösa tid på att leta efter problem relaterade till kodningar.


Visitkortswebbplats: funktioner för en bra start
Luftmadrasser från Lamon
WebNames.Ru – ett decennium av aktivitet på Internet
Lägenhet för din webbplats.
Teknik från BoldSoft
Hur man lyckas med hopplösa projekt
Ny typ av navigationssystem för sidvisning
Skapa PDF med PHP
PHP och PostgreSQL
Optimera MySQL

Skapa PDF med PHP

Förord
En av anledningarna till att jag älskar PHP– detta beror på att det ständigt ger stöd för ny teknik. Språket är lätt att utöka, och utvecklare kan enkelt lägga till nya moduler till det, så PHP har blivit en av de mest funktionella Webbspråk stöder en stor variation olika tekniker. Tillägg som är tillgängliga idag gör det enkelt för utvecklare att arbeta med IMAP-server och POP3; skapa dynamiskt bilder och ritningar i Flash-format; utföra verifieringsåtgärder kreditkort; kryptera känsliga data; och arbeta med XML-databaser.

Och det är inte allt! En av de mest intressanta tilläggen som lagts till hittills i PHP- det här är en förlängning PDFLib, vilket gör det möjligt för utvecklare att dynamiskt generera dokument i formatet PDF (Adobe Portable Document Format). Under de kommande sidorna kommer jag kortfattat att introducera denna modul och ge en översikt över de funktioner som används och hur man använder detta tillägg i PHP utveckling. Låt oss gå!

Gå!
För att aktivera tillägget PDFLib, först måste du installera lämpligt bibliotek på ditt system. Om du jobbar för Linux, kan du ladda ner en kopia från http://www.pdflib.com/pdflib/index.html och kompilera den för din server. Om du arbetar på Windows är allt mycket enklare - tillsammans med distributionen PHP en kompilerad modul levereras redan PDF, och allt du behöver göra är att aktivera den genom att avkommentera motsvarande rad i konfigurationsfilen.

Dessutom behöver du en kopia av programmet Adobe Acrobat PDF-läsare för att läsa dokument som skapats med hjälp av biblioteket PDFLib. Ladda ner gratis Adobe Acrobat Reader finns på tillverkarens webbplats: http://www.adobe.com/

När allt är installerat är det dags att skapa en enkel PDF dokumentera:

Spara den här filen och öppna den sedan i din webbläsare. PHP kommer att bearbeta det här skriptet och generera ett nytt PDF fil som kommer att sparas på den plats som anges överst i skriptet. Det här är vad du kommer att se när du öppnar detta PDF-dokument:

Alla rättigheter att publicera denna artikel tillhör

Anatomi lektion
Låt oss ta en närmare titt på koden som används i exemplet ovan.

Skapande PDF fil in PHP innebär 4 grundläggande steg: skapa ett index till dokumentet, registrera teckensnitt och färger för dokumentet, skriva eller rita till indexet med fördefinierade funktioner och spara dokumentet.

Låt oss börja med det första steget – skapa en pekare till PDF

// skapa handtag för nytt PDF-dokument $pdf = pdf_new();

Detta uppnås med funktionen pdf_new() som returnerar en pekare till detta dokument. Denna pekare används sedan i alla efterföljande skapande operationer. PDF dokumentera.

Nästa steg är att ge PDF filnamn - detta uppnås av funktionen pdf_open_file() som tar två argument - pekaren som returneras av föregående funktion och det faktiska filnamnet, definierat av användaren.

// öppna en fil pdf_open_file($pdf, "philosophy.pdf");

När dokumentet har skapats kan du infoga början ny sida funktion pdf_begin_page(),

// starta en ny sida (A4) pdf_begin_page($pdf, 595, 842);

och slutet på sidan - ja ni gissade rätt!! - funktion pdf_end_page().

// slutsida pdf_end_page($pdf);

Observera att funktionen pdf_begin_page() kräver två ytterligare parametrar, som representerar bredd och höjd dokument som skapas i prickar (en punkt är lika med 1/72 tum). Om du är dålig på matte, en lärobok på PHP inkluderar standardstorlekar för alla vanliga sidstorlekar, inklusive A4, som används ovan.

Mellan anropen pdf_begin_page() och pdf_end_page() finns kod som skriver till filen, oavsett om det är text, bilder eller geometriska figurer. I det här exemplet skriver jag bara en textrad i dokumentet - så allt jag behöver göra är att välja ett teckensnitt och använda det när jag skriver text i dokumentet.

Val av teckensnitt och registrering utförs av funktionerna pdf_findfont() och pdf_setfont(). Funktionen pdf_findfont() väljer ett teckensnitt som ska användas i dokumentet och kräver teckensnittsnamn, kodningsmetod och en boolesk parameter som anger om teckensnittet ska bäddas in i dokumentet. PDF dokumentera; och det returnerar ett teckensnittsobjekt, som sedan kan användas när funktionen pdf_setfont() anropas.

$arial = pdf_findfont($pdf, "Arial", "värd", 1); pdf_setfont($pdf, $arial, 10); När typsnittet är valt kan funktionen pdf_show_xy() användas för att skriva text till en specifik plats på sidan.
// print text pdf_show_xy($pdf, "Det finns fler saker i himmel och jord, Horatio",", 50, 750); pdf_show_xy($pdf, "än du drömmer om i din filosofi", 50, 730);

Som du märkte kräver denna funktion en pekare till PDF dokument, en länk till typsnittsobjektet som används, texten som ska skrivas och XY-koordinaterna för den plats varifrån man ska börja skriva texten. Dessa koordinater anges i förhållande till punkten (0,0), som finns i dokumentets nedre vänstra hörn.

När texten har skrivits stängs sidan genom att anropa funktionen pdf_end_page(). Du kan sedan lägga till fler sidor eller, som jag gjorde här, helt enkelt stänga dokumentet med pdf_close(). Denna funktion kommer att spara dokumentet med det namn som anges när pdf_open_file() anropas och förstöra dokumentpekaren.

Alla rättigheter att publicera denna artikel tillhör

Och här är PDF-utdata:

All magin här ligger i funktionerna pdf_open_image_file() och pdf_place_image(). Den första tar bildtypen - GIF, JPEG, TIFF eller PNG- och filnamnet som argument, och returnerar en pekare till ritningen, som sedan kan återanvändas i dokumentet.

Pekaren till bilden som returneras ovan kan sedan skickas till funktionen pdf_place_image() som kommer att placera bilden på en specifik plats på sidan. Koordinaterna som skickas till denna funktion (det andra och tredje argumentet) hänvisar till det nedre vänstra hörnet av bilden, och det fjärde argumentet anger skalningsparametern för bilden när den visas (1 - visar bilden i 100 % skala, 0,5 kommer att minska det med hälften.)

Alla rättigheter att publicera denna artikel tillhör

Kortaste avståndet mellan två punkter
Låt oss inte sluta! Modul PDF inkluderar stor mängd funktioner som hjälper dig att rita linjer, cirklar och andra former. Här är ett exempel där vi drar en linje.

Här är vad du kommer att se:

I det här fallet innebär processen att rita en linje användning av funktionerna pdf_moveto(), pdf_lineto() och pdf_stroke().

I exemplet ovan ritar jag en linje från punkt (20 780) till punkt (575, 780). För att göra detta måste jag först placera markören vid startpunkten (20 780) genom att anropa funktionen till pdf_moveto().

Sedan måste du ställa in slutpunkten med pdf_lineto():

Slutligen ritar vi en linje med pdf_stroke().

Linjefärgen ställs in av pdf_setcolor()-funktionen, som tar flera parametrar: en pekare till PDF document, linetype: "stroke", "fill" eller "båda", färgpalett(RGB eller CMYK), och en lista över färgvärden som matchar den valda paletten.

pdf_setcolor($pdf, "stroke", "rgb", 0, 0, 0);

Det är viktigt att notera att listan över färgvärden som skickas till pdf_setcolor() måste anges som ett procentuellt intensitetsvärde - det vill säga intensiteten för en given färg uttryckt som en procentandel av det maximala möjliga. Till exempel, om jag vill ställa in (RGB: 255,0,0) som fyllningsfärg, skulle mitt pdf_setcolor() funktionsanrop se ut så här,

pdf_setcolor($pdf, "stroke", "rgb", 1, 0, 0);

Och fyllningen gul kommer se ut så här:

pdf_setcolor($pdf, "fyll", "rgb", 1, 1, 0);

Alla rättigheter att publicera denna artikel tillhör

Fyrkantig pinne, runt hål
Linjer är inte det enda du kan rita – cirklar och rektanglar finns också på dagens meny. Titta på exemplet nedan:

Här är utgången:

I det här fallet används funktionen pdf_rect() för att rita en rektangel med hjälp av givna koordinater nedre vänstra hörnet, höjd och bredd. Sedan fylls rektangeln i och skisseras med två olika färger med funktionen pdf_fill_stroke().

pdf_setcolor($pdf, "fyll", "rgb", 1, 1, 0); pdf_setcolor($pdf, "stroke", "rgb", 0, 0, 0); pdf_rect($pdf, 50, 500, 200, 300); pdf_fill_stroke($pdf);

Cirklar ritas av funktionen pdf_circle() som tar tre argument: X- och Y-koordinaterna för cirkelns centrum och längden på radien.

pdf_circle($pdf, 400, 600, 100);

Denna förmåga att rita geometriska bilder i farten kan vara användbar i olika situationer. Till exempel, här är en av dem - i den är ett par "for"-loopar kopplade till pdf_lineto()-funktionen för att generera ett rutnät av linjer.

Här är utgången:

Alla rättigheter att publicera denna artikel tillhör

Och nu, när du tittar på dokumentet Adobe läsare, kommer du att kunna se denna information i dokumentegenskaperna.

Alla rättigheter att publicera denna artikel tillhör

Del av paj
Nu när du vet hur man skapar dokument PDF, låt oss vända oss till verklig applikation. Nästa exempel visar hur PHP kan ta numeriska data och generera grafer från dem - till exempel en flerfärgad cirkeldiagram.

Formuläret nedan frågar efter flera data, i form av siffror separerade med kommatecken. Efter att ha angett några siffror konverterar skriptet "pie.php" dem från absoluta tal till databitar av relativ storlek och använder dessa bitar för att generera PDF dokument som innehåller ett cirkeldiagram, markera olika delar och fylla dem med olika färger.

Cirkeldiagramgenerator

Ange numeriska värden (pajsegment), separerade med kommatecken
Och här är manuset:

Data som skrivs in i formuläret skickas till skriptet "pie.php" i variabeln $data; dessa data delas sedan in i enskilda komponenter explode()-funktionen och varje värde tilldelas $slices-matrisen. Slingan omvandlar sedan dessa siffror till grader för cirkeln och ritar en båge för varje bit. Varje passage av slingan beräknar också koordinaten för bågens slutpunkt och ritar ett linjesegment för att separera bågen från resten av cirkeln. När pajbiten är ritad, används funktionen pdf_fill_stroke() för att fylla den med färg; färgen är hämtad från $colours-arrayen.

Vi kommer inte att överväga hur skriptet beräknar längden på varje båge och linjesegment - allt förklaras i kodkommentarerna.

Om du anger 5 lika delar av data kommer grafen att se ut så här,

Om du anger 2, då:

Så här – lek med manuset och se hur de olika bitarna ändrar form, reflekterande relativa storlekar data Under tiden - vi ses snart!

Obs: Alla exempel i den här artikeln har testats på plattformen Linux/i586 med Apache 1.3.12 och PHP 4.2.0. Exemplen tillhandahålls endast i illustrativt syfte och är inte avsedda för verkliga tillämpningar.







2024 gtavrl.ru.