PDF

From Ilianko

Подготовка

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

Download the iTextSharp library Extract the iTextSharp library Start new C# Windows Forms project Add reference to the iTextSharp library

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

2. Създаване на нов "Windows Forms Application" Start Visual Studio 2010. Select "New Project". Next, under C#, select "Windows Forms Application". Name the solution something like "FormFillerPDF" and select "OK"

4. 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)

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

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

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

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

7.1. Създване на събитие при натискане на бутон Create a System.IO.FileStream object:

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

7.2. Create a iTextSharp.text.Document object:

Document doc = new Document();

7.3. Create a iTextSharp.text.pdf.PdfWriter object. It helps to write the Document to the Specified FileStream:

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

7.4. Openning the Document:

doc.Open();

7.5. Adding a Paragraph by creating a iTextSharp.text.Paragraph object:

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

7.6. Closing the Document:

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

Литература

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