Difference between revisions of "PDF"

From Ilianko
 
(13 intermediate revisions by the same user not shown)
Line 145: Line 145:
 
</pre></code>
 
</pre></code>
  
==Обединяване на два pdf файла==
+
===Обединяване на два pdf файла===
  
 
Да се изтегли примерния файл [http://ilianko.com/upr/zad2r.pdf zad2r.pdf]. Да се запише в същата директория на получения в задача 1 zad.pdf. Да се изпълни командата:
 
Да се изтегли примерния файл [http://ilianko.com/upr/zad2r.pdf zad2r.pdf]. Да се запише в същата директория на получения в задача 1 zad.pdf. Да се изпълни командата:
Line 182: Line 182:
 
== Генериране на PDF с C#==
 
== Генериране на PDF с C#==
  
http://techvalleyprojects.blogspot.com/2011/08/fill-pdf-forms-in-c-with-itextsharp.html
+
Ще се използва библиотеката [http://sourceforge.net/projects/itextsharp/ iTextSharp]
 +
 
 +
 
 +
1. Сваляне и разархивиране на iTextSharp http://sourceforge.net/projects/itextsharp/. За основната функционалност се ползва itextsharp-dll-core.zip
 +
 
 +
2. Създаване на нов "Windows Forms Application" и записване на проекта
 +
 
 +
4. Добавяне на връзка към iTextSharp библиотеката:
 +
 
 +
От "Solution Explorer" с десен бутон ''Reference->Add Reference...->Browse->itextsharp.dll''
 +
 
 +
5. Добавяне на namespaces
 +
using System.IO; // This is for file access
 +
using iTextSharp.text;
 +
using iTextSharp.text.pdf; // This is for iText
  
http://itextpdf.com/
+
6. Създаване на текстово поле
  
http://sourceforge.net/projects/itextsharp/
+
''Toolbox->textBox''
  
http://www.codeproject.com/Articles/686994/Create-Read-Advance-PDF-Report-using-iTextSharp-in
+
7. Добавяне бутон запис на pdf
  
 +
''Toolbox->button''
  
 +
7.1. Създване на събитие при натискане на бутон. Двоен клик върху бутона.
  
Download the iTextSharp library
+
Създаване на файл където ще се записва pdf документа с System.IO.FileStream:
Extract the iTextSharp library
+
FileStream fs = new FileStream("test.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
Start new C# Windows Forms project
 
Add reference to the iTextSharp library
 
  
#Download iTextSharp
+
7.2. Създаване на нов pfd документ с iTextSharp.text.Document обект:
Download the iTextSharp library at http://sourceforge.net/projects/itextsharp/
 
#:
 
#Extract the iTextSharp library
 
Extract the library to a new folder that you can find again.  I extracted mine to my Visual Studio directory.  For example, "\Visual Studio 2010\external libraries\iText lib"
 
#:
 
#Create a new C# Windows Forms project
 
Start Visual Studio 2010.  Select "New Project".  Next, under C#, select "Windows Forms Application".  Name the solution something like "FormFillerPDF" and select "OK"
 
#:
 
#Add a reference to the iTextSharp library
 
In your Solution Explorer, right click on "Reference".  Left-click on "Add Reference..." (Figure 4.1)
 
(Alternatively, you can also select "Project" then "Add Reference..." from the menu.)  Now you'll need to find the folder where you extracted the iTextSharp library in step 2. In that location, find "itextsharp.dll" and select "OK".  (Figure 4.2)
 
#:
 
#Създаване на текстово поле
 
#Добавяне бутон
 
#Създване на събитие при натискане на бутон
 
##Create a System.IO.FileStream object:
 
FileStream fs = new FileStream("Chapter1_Example1.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
 
##:
 
##Create a iTextSharp.text.Document object:
 
 
  Document doc = new Document();
 
  Document doc = new Document();
##:
+
 
##Create a iTextSharp.text.pdf.PdfWriter object. It helps to write the Document to the Specified FileStream:
+
7.3. Създаване на iTextSharp.text.pdf.PdfWriter обект за връзка с файла и pdf документа
 
  PdfWriter writer = PdfWriter.GetInstance(doc, fs);
 
  PdfWriter writer = PdfWriter.GetInstance(doc, fs);
##:
+
 
##Openning the Document:
+
7.4. Отваряне на pdf
 
  doc.Open();
 
  doc.Open();
##:
+
 
##Adding a Paragraph by creating a iTextSharp.text.Paragraph object:
+
7.5. Добавяне на параграф с iTextSharp.text.Paragraph обект:
 
  doc.Add(new Paragraph(richTextBox.Text1));
 
  doc.Add(new Paragraph(richTextBox.Text1));
##:
+
 
##Closing the Document:
+
7.6. Добавяне на изображение
 +
iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(twain321.GetImage(0),
 +
System.Drawing.Imaging.ImageFormat.Jpeg);
 +
doc.Add(pdfImage);
 +
 
 +
7.7. Затваряне на pdf документа:
 
  doc.Close();
 
  doc.Close();
 +
 +
Връзки
 +
http://techvalleyprojects.blogspot.com/2011/08/fill-pdf-forms-in-c-with-itextsharp.html
 +
http://itextpdf.com/
 +
http://sourceforge.net/projects/itextsharp/
 +
http://www.codeproject.com/Articles/686994/Create-Read-Advance-PDF-Report-using-iTextSharp-in
  
 
== Литература ==  
 
== Литература ==  
  
#[http://books.google.bg/books?id=1TpDgwNGIK8C&printsec=frontcover&dq=PDF+Explained&hl=en&sa=X&ei=56G3T_2yFbTb4QSaueywCQ&ved=0CC8Q6AEwAA John Whitington, PDF Explained - The ISO Standard for Document Exchange, O'Reilly Media, December 2011]
+
http://10.3.45.22/books/PDF/
#Sid Steward, PDF Hacks, O'Reilly Media,August 2004; http://www.pdfhacks.com, http://etutorials.org/Linux+systems/pdf+hacks/PDF+Hacks/
+
 
 +
#[http://10.3.45.22/books/PDF/PDF_Explained_2011.12_John_Whitington.pdf John Whitington, PDF Explained - The ISO Standard for Document Exchange, O'Reilly Media, December 2011]
 +
#[http://10.3.45.22/books/PDF/itext.pdf The Best iText Questions on StackOverflow,iText Software, 2015-02-14]
 +
#[http://10.3.45.22/books/PDF/OReilly_PDF_Hacks_2004.pdfSid Steward, PDF Hacks, O'Reilly Media,August 2004] http://www.pdfhacks.com, http://etutorials.org/Linux+systems/pdf+hacks/PDF+Hacks/
 
#[http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf Document Management – Portable Document Format – Part 1: PDF 1.7, First Edition,Adobe 2008]
 
#[http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf Document Management – Portable Document Format – Part 1: PDF 1.7, First Edition,Adobe 2008]
 
#[http://www.fpdf.org FPDF] - удобен за генериране на pdf (v1.3) с PHP
 
#[http://www.fpdf.org FPDF] - удобен за генериране на pdf (v1.3) с PHP
 +
#[http://www.tcpdf.org/ TCPDF] - удобен за генериране на pdf  с PHP
 
#http://www.pdflib.com/ - подържат - C, C++,Java,Perl,PHP,Python,Tcl,Ruby
 
#http://www.pdflib.com/ - подържат - C, C++,Java,Perl,PHP,Python,Tcl,Ruby
  
 
[[Category:Компютърна периферия| ]]
 
[[Category:Компютърна периферия| ]]

Latest revision as of 10:58, 9 February 2016

Подготовка

sudo apt-get update
sudo apt-get install vim
sudo apt-get install pdftk
sudo apt-get install php5

Създаване на pdf

Зад.1.

vim zad1.pdf

Натискате "i" за влизате в текстов режим и копирате кода Листинг1. Натискате "Esc", ":", "w","q","Enter".

%PDF-1.0 File header
1 0 obj
<<
  /Type /Pages
  /Count 1
  /Kids [2 0 R]
>>
endobj
2 0 obj
<< 
  /Type /Page
  /MediaBox [0 0 612 792]
  /Resources 3 0 R
  /Parent 1 0 R
  /Contents [4 0 R]
>>
endobj
3 0 obj
<< 
  /Font
  <<
    /F0
    << 
      /Type /Font
      /BaseFont /Times-Italic
      /Subtype /Type1
    >>
  >>
>>
endobj
4 0 obj
<< >>
stream
  1. 0. 0. 1. 50. 700. cm
  BT /F0 36. Tf (Hello, World!) Tj ET
endstream
endobj
5 0 obj
<<
  /Type /Catalog
  /Pages 1 0 R
>>
endobj
xref
0 6
trailer
<< 
  /Size 6
  /Root 5 0 R
>>
startxref
0
%%EOF

Коригиране на pdf с pdftk

Връзки между обектите на pdf

Изпълнете следната команди, за да се добави липсващата информация към pdf-a.

pdftk zad1.pdf output zad.pdf

Разгледайте резултата и вижте коментарите листинг 2.

vi zad.pdf
evince zad.pdf

След коригиране на pdf-a.

%PDF-1.0 начало и версия
%âãÏÓ non printable caracters, за да
1 0 obj Обект 1, Съдържа Структурата на страниците
<<
/Kids [2 0 R]
/Count 1
/Type /Pages
>>
endobj
2 0 obj описание на страницата
<<
/Parent 1 0 R
/Resources 3 0 R допълнителни данни за възпроизвеждане на страницата
/MediaBox [0 0 612 792] Размер на страницата
/Contents [4 0 R] съдържание на страницата
/Type /Page
>>
endobj
3 0 obj Информация за шрифта
<<
/Font
  <<
   /F0 Име на шрифта
   <<
     /BaseFont /Times-Italic
     /Subtype /Type1
     /Type /Font
   >>
  >>
>>
endobj

endobj
4 0 obj Съдържание на страницата
<<
/Length 64 Размер на данните в stream
>>
stream
  1. 0. 0. 1. 50. 700. cm
  BT /F0 36. Tf (Hello, World!) Tj ET
endstream 
endobj
5 0 obj Роот обект
<<
/Pages 1 0 R
/Type /Catalog
>>
endobj xref Местоположение на всечки обекти
0 6
0000000000 65535 f 
0000000015 00000 n 
0000000074 00000 n 
0000000182 00000 n 
0000000281 00000 n 
0000000398 00000 n 
trailer

<<
/Root 5 0 R
/Size 6
>>
startxref
448 Местоположение на препратките
%EOF

Обединяване на два pdf файла

Да се изтегли примерния файл zad2r.pdf. Да се запише в същата директория на получения в задача 1 zad.pdf. Да се изпълни командата:

pdftk zad.pdf zad2r.pdf cat output zad2c.pdf

Разгледайте получения файл и начертайте схема с връзките между блоковете.

vi zad2c.pdf
evince zad2c.pdf

Генериране на PDF c PHP

Да се създаде директория php

mkdir /home/lab/php

Да се свали php скрипт с подръжка на UTF-8 за генериране на pdf. Файлът съдържа и набор от TrueType шрифтове.

Файлът да се разархивира в директория /home/lab/php

cd ~/php
unzip tfpdf.zip

Да се изпълни примерният скрипт и да се разгледа резулатата.

cd ~/php
php ex.php > myphp.pdf
vi myphp.pdf
evince muphp.pdf

Да се разкомпресира pdf файлът и да се разгледа резулатата.

pdftk myphp.pdf output de.pdf uncompress
vi de.pdf
evince de.pdf

Да се разгледа и модифицира кода на ex.php:

vi ex.php


Генериране на PDF с C#

Ще се използва библиотеката iTextSharp


1. Сваляне и разархивиране на iTextSharp http://sourceforge.net/projects/itextsharp/. За основната функционалност се ползва itextsharp-dll-core.zip

2. Създаване на нов "Windows Forms Application" и записване на проекта

4. Добавяне на връзка към iTextSharp библиотеката:

От "Solution Explorer" с десен бутон Reference->Add Reference...->Browse->itextsharp.dll

5. Добавяне на namespaces

using System.IO; // This is for file access
using iTextSharp.text;
using iTextSharp.text.pdf; // This is for iText

6. Създаване на текстово поле

Toolbox->textBox

7. Добавяне бутон запис на pdf

Toolbox->button

7.1. Създване на събитие при натискане на бутон. Двоен клик върху бутона.

Създаване на файл където ще се записва pdf документа с System.IO.FileStream:

FileStream fs = new FileStream("test.pdf", FileMode.Create, FileAccess.Write, FileShare.None);

7.2. Създаване на нов pfd документ с iTextSharp.text.Document обект:

Document doc = new Document();

7.3. Създаване на iTextSharp.text.pdf.PdfWriter обект за връзка с файла и pdf документа

PdfWriter writer = PdfWriter.GetInstance(doc, fs);

7.4. Отваряне на pdf

doc.Open();

7.5. Добавяне на параграф с iTextSharp.text.Paragraph обект:

doc.Add(new Paragraph(richTextBox.Text1));

7.6. Добавяне на изображение

iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(twain321.GetImage(0),

System.Drawing.Imaging.ImageFormat.Jpeg);

doc.Add(pdfImage);

7.7. Затваряне на pdf документа:

doc.Close();

Връзки http://techvalleyprojects.blogspot.com/2011/08/fill-pdf-forms-in-c-with-itextsharp.html http://itextpdf.com/ http://sourceforge.net/projects/itextsharp/ http://www.codeproject.com/Articles/686994/Create-Read-Advance-PDF-Report-using-iTextSharp-in

Литература

http://10.3.45.22/books/PDF/

  1. John Whitington, PDF Explained - The ISO Standard for Document Exchange, O'Reilly Media, December 2011
  2. The Best iText Questions on StackOverflow,iText Software, 2015-02-14
  3. Steward, PDF Hacks, O'Reilly Media,August 2004 http://www.pdfhacks.com, http://etutorials.org/Linux+systems/pdf+hacks/PDF+Hacks/
  4. Document Management – Portable Document Format – Part 1: PDF 1.7, First Edition,Adobe 2008
  5. FPDF - удобен за генериране на pdf (v1.3) с PHP
  6. TCPDF - удобен за генериране на pdf с PHP
  7. http://www.pdflib.com/ - подържат - C, C++,Java,Perl,PHP,Python,Tcl,Ruby