Coder Social home page Coder Social logo

setasign / fpdi Goto Github PK

View Code? Open in Web Editor NEW
1.0K 21.0 157.0 4.43 MB

FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF.

Home Page: https://www.setasign.com/fpdi

License: MIT License

PHP 100.00%
php pdf fpdf fpdi

fpdi's Introduction

FPDI - Free PDF Document Importer

Latest Stable Version Total Downloads Latest Unstable Version License

❗ This document refers to FPDI 2. Version 1 is deprecated and development is discontinued. ❗

FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF, which was developed by Olivier Plathey. Apart from a copy of FPDF, FPDI does not require any special PHP extensions.

FPDI can also be used as an extension for TCPDF or tFPDF, too.

Installation with Composer

Because FPDI can be used with FPDF, TCPDF or tFPDF we haven't added a fixed dependency in the main composer.json file. You need to add the dependency to the PDF generation library of your choice yourself.

To use FPDI with FPDF include following in your composer.json file:

{
    "require": {
        "setasign/fpdf": "1.8.*",
        "setasign/fpdi": "^2.5"
    }
}

If you want to use TCPDF, you have to update your composer.json to:

{
    "require": {
        "tecnickcom/tcpdf": "6.6.*",
        "setasign/fpdi": "^2.5"
    }
}

If you want to use tFPDF, you have to update your composer.json to:

{
    "require": {
        "setasign/tfpdf": "1.33.*",
        "setasign/fpdi": "^2.3"
    }
}

Manual Installation

If you do not use composer, just require the autoload.php in the /src folder:

require_once('src/autoload.php');

If you have a PSR-4 autoloader implemented, just register the src path as follows:

$loader = new \Example\Psr4AutoloaderClass;
$loader->register();
$loader->addNamespace('setasign\Fpdi', 'path/to/src/');

Changes to Version 1

Version 2 is a complete rewrite from scratch of FPDI which comes with:

  • Namespaced code
  • Clean and up-to-date code base and style
  • PSR-4 compatible autoloading
  • Performance improvements by up to 100%
  • Less memory consumption
  • Native support for reading PDFs from strings or stream-resources
  • Support for documents with "invalid" data before their file-header
  • Optimized page tree resolving
  • Usage of individual exceptions
  • Several test types (unit, functional and visual tests)

We tried to keep the main methods and logical workflow the same as in version 1 but please notice that there were incompatible changes which you should consider when updating to version 2:

  • You need to load the code using the src/autoload.php file instead of classes/FPDI.php.
  • The classes and traits are namespaced now: setasign\Fpdi
  • Page boundaries beginning with a slash, such as /MediaBox, are not supported anymore. Remove the slash or use a constant of PdfReader\PageBoundaries.
  • The parameters $x, $y, $width and $height of the useTemplate() or getTemplateSize() method have more logical correct default values now. Passing 0 as width or height will result in an InvalidArgumentException now.
  • The return value of getTemplateSize() had changed to an array with more speaking keys and reusability: Use width instead of w and height instead of h.
  • If you want to use FPDI with TCPDF you need to refactor your code to use the class Tcpdf\Fpdi (since 2.1; before it was TcpdfFpdi) instead of FPDI.

Example and Documentation

A simple example, that imports a single page and places this onto a new created page:

<?php
use setasign\Fpdi\Fpdi;
// or for usage with TCPDF:
// use setasign\Fpdi\Tcpdf\Fpdi;

// or for usage with tFPDF:
// use setasign\Fpdi\Tfpdf\Fpdi;

// setup the autoload function
require_once('vendor/autoload.php');

// initiate FPDI
$pdf = new Fpdi();
// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile("Fantastic-Speaker.pdf");
// import page 1
$tplId = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 100 mm
$pdf->useTemplate($tplId, 10, 10, 100);

$pdf->Output();            

A full end-user documentation and API reference is available here.

fpdi's People

Contributors

dalioedoardo avatar dependabot[bot] avatar janslabon avatar maximiliankresse avatar vincent-- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fpdi's Issues

tcpdf laravel Save file name issue

Hello,

i have a issue for the filename of tcpdf on download, for example 'Héllo oumaya.pdf' i had 'Hllo_oumaya.pdf' first special char is empty , second the space is replaced ' ' by '_' ???

any help please ? :'( :'(

Fatal error: Class 'FPDF' not found in FpdfTpl.php on line 20

I have index.php with belowe code.

`<?php
use setasign\Fpdi;

// setup the autoload function
require_once('src/autoload.php');

// initiate FPDI
$pdf = new Fpdi\Fpdi();
// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile("doc.pdf");
// import page 1
$tplId = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 100 mm
$pdf->useTemplate($tplId, 10, 10, 100);

$pdf->Output(); `

FPDI-2.0.0/src are linked to index.php file. Why am i getting this error?

Annotations are gone from a PDF file after save.

After I imported a PDF file and saved it, some data was lost. I have annotations on this screenshot
image

But in the next one, it's gone.
image
I can send a sample of the PDF file if it's necessary.
The code I use is pretty simple:

        $pdf->setSourceFile($source);
        $pdf->AddPage();
        $tppl = $pdf->importPage($i);
        $pdf->useTemplate($tppl, 0, 0, $pgHorz, $pgVert);
        $pdf->Output();

FPDI version 2.2.0

Optimize PdfParser::readValue()

The current readValue() method shall be made private and renamed to readValueByToken($token, $expectedType).

Implement a new readValue() method which will have an optional parameter $expectedType.
Internally it will resolve the first token and forward it to the new private method. It also will forward the $expectedType accordingly.

The checks for the $expectedType have to implemented accordingly.

Code that calls readValue() needs to be optimized to use the $expectedType.

This optimization allows better error handling in faulty PDF files.

does not work w/ cyrillic fonts at all

This lib works perfectly with latin, but doesn't work with cyrillic text.
We tried decoding our stuff with iconv, tfpdf, docnet/tfpdf, embedded php tools, etc.
Result still looks like ╪с╖ыих ▐ ╘и ╡╓√ч сав╓хахэ
Maybe you have some old tricks to resolve cyrillic problems, would be nice

Add handling of PDF documents with direct pages

Such object structures are invalid but sadly there are some PDF creators on the road which produces them...

We need to simulate indirect objects in this case. We could use the trailer object to get the size entry + an offset for the new entries. We will "repair" the page tree at runtime.

A public test document needs to be created manually.

pdf_parser.php not in composer autoload.

I starting using this with composer in a project (with a confusing autoload system in place however) and ran into problems when fpdi_pdf_parser.php tried to import pdf_parser (once again because of the confusing autoload system I have and not following paths correctly) but then I just required the pdf_parser.php file in a global file that loaded before composer and it worked fine.

I was wondering why pdf_parser.php was not included in the composer.json classmaps and if it should be, or if I am missing something. Seems there is no harm in loading it eagerly, since the parser is going to require it anyways. maybe this is a super niche situation that I just need to hack through, but thought I'd let you know about this bug anyways.

Cannot found FPDI class/ Composer error

Hello !

I've an issue with FPDI, as the title says it's about the class FPDI :
"Fatal error: Class 'fpdi\FPDI' not found in C:"

My code is the following :

` require_once('fdpi/vendor/autoload.php');
require_once('fdpi/src/autoload.php');

use fpdi\FPDI;

$pdf = new FDPI();
$pdf->AddPage();`

I haven't seen any solution on internet..
Thanks !

EDIT:
I realized that I had to add :
{ "require": { "setasign/fpdf": "^1.8", "setasign/fpdi": "^2.0" } }
into the composer file if I want to use FPDF in the same time, and thats what I did, but now I've an issue with the composer, I tried to remove everything but the error is still remaining.

  • The requested package setasign/fpdi No version set (parsed as 1.0.0) is satisfiable by setasign/fpdi[No version set (parsed as 1.0.0)] but these conflict with your requirements or minimum-stability.

Text not showing when importing PDF

Hi,

I'm using FPDI for importing PDFs and merge them but with one file it doesn't show the text after merging

The original file is made with iTextSharp and have custom fonts

I tried adding them, extracting fonts from the original file etc but the text still don't show

image

The font definitions inside Adobe Acrobat are almost the same, only the encoding seems different. The original one has custom encoding and the FPDI one has Ansi encoding

image

senzanome

Thank you

Unable to find pointer to xref table

I'm getting the following exception with several v1.4 PDF files

Fatal error: Uncaught setasign\Fpdi\PdfParser\CrossReference\CrossReferenceException: Unable to find pointer to xref table in C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasign\fpdi\src\PdfParser\CrossReference\CrossReference.php:298 Stack trace: #0 C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasign\fpdi\src\PdfParser\CrossReference\CrossReference.php(63): setasign\Fpdi\PdfParser\CrossReference\CrossReference->findStartXref() #1 C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasign\fpdi\src\PdfParser\PdfParser.php(158): setasign\Fpdi\PdfParser\CrossReference\CrossReference->__construct(Object(setasign\Fpdi\PdfParser\PdfParser), 0) #2 C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasign\fpdi\src\PdfParser\PdfParser.php(203): setasign\Fpdi\PdfParser\PdfParser->getCrossReference() #3 C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasign\fpdi\src\PdfParser\PdfParser.php(182): setasign\Fpdi\PdfParser\PdfParser->getCatalog() #4 C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasig in C:\xampp\htdocs\assets\APIs_vendor\puppeteer\vendor\setasign\fpdi\src\PdfParser\CrossReference\CrossReference.php on line 298

The pdf file was validated online and it has no corruption. Its version is 1.4. Any idea on what could be causing this ? and how to fix it ?
I'm using the latest version of FPDF and was installed using composer.

Validate $filename in StreamReader::createByFile()

Actually there's no validation before the parameter is passed to fopen(). This could end in a warning.

We could fix this by something like:

if (!(\file_exists($filename) || \is_readable($filename))) {
    throw new \InvalidArgumentException("File does not exists or is not readable.");
}

But this would break usage with stream-wrappers which do not implement url_stat() completely (without mode(2)).

So implementing this check would be a BC break.

Any needs to "fix" this or is the current E_WARNING enough? Ideas?

Broken PDF after merging

I used Word 16 on W10 to generate a PDF (with save as, print, print with win2pdf). Then I use FPDF to generate another PDF.

Now I try to merge the two PDFs with FPDI (I can detail how if it is necessary). The PDF generated by Word end broken, all special chars are replaced, some string appears. And here is the strange stuff :

  • when I display the PDF using Chrome, the string "VHUD FpGp DX FOLHQW" (etc.) appears instead of the text
  • when I select this string, copy it and paste it in notepad, I got "FDWLRQHQ
    France Métropolitaine ±Dans
    tous les cas se renseigner
    auprès de son opérateur.
    Date Indicative de mise en service :
    Le numéro "

And the PDF generated by FPDF is properly merged.

Do you have any idea how to solve this ? I can provide the document for analysis if you need (but in private due to personnal data in it)

Thanks a lot

Deprecation message using PHP7.2

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in .../vendor/setasign/fpdi/fpdi.php on line 574

[FPDI + FPDF] Getting ghostscript error when opening generated PDF with Imagick

I am having problems when trying to convert the pdf to png. The pdf looks ok, I can open it with PDF viewers, but Imagick or ghostcript fail when trying to convert it to images.
I tried even with a very simple PDF without text, fonts or added images, but it still fails.

Code to reproduce it:

$outputPdf = new Fpdi('L', 'pt');
$outputPdf->Output('/tmp/output.pdf', 'F');
$pdf = new Imagick('/tmp/output.pdf');
// The error occurs here

Result when opening it with Imagick:

Error: /execstackoverflow in --run--
Operand stack:
   --dict:5/5(L)--   0   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   16   false   20   false   --nostringval--   --nostringval--   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1999   1   3   %oparray_pop   1998   1   3   %oparray_pop   1982   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   2   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   4   %dict_continue   --nostringval--   --nostringval--   --dict:7/7(L)--   --nostringval--   8   %dict_continue   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1216/1684(ro)(G)--   --dict:1/20(G)--   --dict:83/200(L)--   --dict:83/200(L)--   --dict:137/256(ro)(G)--   --dict:298/300(ro)(G)--   --dict:32/32(L)--   --dict:0/6(L)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.21: Unrecoverable error, exit code 1

Adobe's site says that this kind of error indicate the file contains unintelligible PostScript code.

Add .gitattributes

To remove tests from releases we should add such file with content like:

/tests export-ignore

Anyhow this actually clashes with "local-tests" because they refer to PDF test files in the tests folder.

Dummyfont when setFontSize before adding Fonts

When I am starting an new PDF and setting font params like this:
$pdf->setFontSize(8); $pdf->setFont('some custom font name);
then the generated PDF will be fine for most clients but not for Adobe Acrobat. This will output some "Font source not found" erros and it is not possible to work with this PDF.
I think \setasign\Fpdi\FpdfTplTrait::SetFontSize should throw an exception when setting font size without having current font defined. This could have spare 3 hours of debugging for me.

FPDI attached document encoding becomes weird

Hello

We are using the paid version of FDPI together with TCPDF to attach PDFs to other PDFs, sadly some PDF become really weird and it seems to be an encoding issue or something similar, however other PDF with the same characters seem to just work fine (e.g ö,ä,ü).

Do you have any tips on how we can proceed to find and eliminate this issue? I have attached the PDF and the outcome after using below code to attach the two PDF. See page 3 for the weird characters appearing.

If this is not the correct place to post this, please tell me where is...

                                   $tcpdfObject = new \FPDI();
                                   // Merging of the existing PDF pages to the final PDF
                                    $pageCount = $tcpdfObject->setSourceFile($fileUniqueName);
                                    for ($i = 1; $i <= $pageCount; $i++) {
                                          $tplIdx = $tcpdfObject->importPage($i);
                                          $specs = $tcpdfObject->getTemplateSize($tplIdx);

                                          if ($specs['h'] > $specs['w']) {
                                               $tcpdfObject->addPage('P');
                                               $tcpdfObject->useTemplate($tplIdx, 0, 0, 210, 297);
                                          }
                                          else {
                                                $tcpdfObject->addPage('L');
                                                $tcpdfObject->useTemplate($tplIdx, 0, 0, 297, 210);                                                
                                          }
                                    }

attachedPDFBefore.pdf

attachedPDFBroken.pdf

PHP 7.2 compatibility

Hi,

I have run following PHPCS command and getting following error & warning:

$ phpcs --standard=PHPCompatibility --extensions=php,module,inc,install,test,profile,theme --runtime-set testVersion 7.2 .

FILE: setasign\fpdi\fpdi.php

FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE

574 | WARNING | Function each() is deprecated since PHP 7.2; Use a foreach loop instead

any plan to fix this?

Stream value expected

I keep getting this error

Caused by: setasign\Fpdi\PdfParser\Type\PdfTypeException Stream value expected. vendor/setasign/fpdi/src/PdfParser/Type/PdfType.php:61 setasign\Fpdi\PdfParser\Type\PdfType::ensureType vendor/setasign/fpdi/src/PdfParser/Type/PdfStream.php:101 setasign\Fpdi\PdfParser\Type\PdfStream::ensure vendor/setasign/fpdi/src/PdfParser/CrossReference/CrossReference.php:216 setasign\Fpdi\PdfParser\CrossReference\CrossReference::initReaderInstance vendor/setasign/fpdi/src/PdfParser/CrossReference/CrossReference.php:188 setasign\Fpdi\PdfParser\CrossReference\CrossReference::readXref vendor/setasign/fpdi/src/PdfParser/CrossReference/CrossReference.php:64 setasign\Fpdi\PdfParser\CrossReference\CrossReference::__construct vendor/setasign/fpdi/src/PdfParser/PdfParser.php:155 setasign\Fpdi\PdfParser\PdfParser::getCrossReference vendor/setasign/fpdi/src/PdfParser/PdfParser.php:197 setasign\Fpdi\PdfParser\PdfParser::getCatalog vendor/setasign/fpdi/src/PdfParser/PdfParser.php:179 setasign\Fpdi\PdfParser\PdfParser::getPdfVersion vendor/setasign/fpdi/src/PdfReader/PdfReader.php:82 setasign\Fpdi\PdfReader\PdfReader::getPdfVersion vendor/setasign/fpdi/src/FpdiTrait.php:182 setasign\Fpdi\Fpdi::setSourceFile vendor/iio/libmergepdf/src/Merger.php:136 iio\libmergepdf\Merger::merge

Any ideas?

$isLeaf in PdfReader::readPages() is error-prone

While we use this information to not parse the whole page tree in some situations to gain speed it is error-prone in some special situations.

Following structure will e.g. result in wrong indirect references in the pages property:

1 0 obj
	/Type /Pages
	/Count 10
	/Kids [2 0 R 3 0 R]
endobj

2 0 obj
	/Type /Pages
	/Count 5
	/Kids [4 0 R 5 0 R]
endobj

3 0 obj
	/Type /Pages
	/Count 5
	/Kids [6 0 R 7 0 R]
endobj

4 0 R 
	/Type /Pages
	/Count 3
	/Kids [8 0 R 9 0 R 10 0 R]
endobj

5 0 R 
	/Type /Pages
	/Count 2
	/Kids [11 0 R 12 0 R]
endobj

11 0 R % currently THIS object is saved as the reference to page because it was resolved as leaf
	/Type /Pages
	/Count 0
	/Kids []
endobj

12 0 R
	/Type /Pages
	/Count 2
	/Kids [13 0 R 14 0 R]
endobj
...

Removing the $isLeaf value will fix this but will currently increase the process time for the unit tests from ~9 to ~11 seconds.

We need to create a test document, that fails and see how we can fix this while keeping the processing speed.

Tag 1.4.2 gone

Hi,

Our composer.json has:

"setasign/fpdi": "1.4.2"

But this is no longer available. Is there a reason to remove that tag ?

Thanks.

Error FpdiTrait.php with lib FpdiPdfParser not exists.

Version : php 5.6.35

The library FpdiPdfParser (line 34-37 file FpdiTrait.php) not being defined the function getPdfParserInstance (StreamReader $ streamReader) (line 103 file FpdiTrait.php).

Returns an error of type:
Exception 'Exception' with message 'Warning: include (Setasign \ FpdiPdfParser \ PdfParser \ PdfParser.php): failed to open stream: No such file or directory

My test to return exception : var_dump(\class_exists(FpdiPdfParser::class)); die;

And so this can not generate the output pdf of the sourcefile.

It would be necessary to add a condition which makes it possible to test if the directory exists of the library.

Thanks.

Rotate Template ( not page )

Hello. I'm trying to combine multiple pdf pages into 1. Which works as shown in this example :
https://www.setasign.com/products/fpdi/demos/thumbnails/#p-271

But the problem comes when i import a page that is in different direction.
Meaning i have 4 - A6 pages and I want to merge them into 1 - A4 page. 3 of them are oriented correctly so i just call the normal process that is in the link given above(instead of iterating pages i iterate files) . The problem is that i need to rotate only the template for 1(one) of the imported pages and not the entire page.

Is there a way to rotate an entire Template that is imported before calling useImportedPage?
`
$pageCount = $pdf->setSourceFile($filename);

$width = $pdf->GetPageWidth() / 2 - 15;
$height = 0;

$_x = $x = 10;
$_y = $y = 10;

$pdf->AddPage();
for ($n = 1; $n <= $pageCount; $n++) {
$pageId = $pdf->importPage($n);

$size = $pdf->useImportedPage($pageId, $x, $y, $width);
$pdf->Rect($x, $y, $size['width'], $size['height']);
$height = max($height, $size['height']);
if ($n % 2 == 0) {
    $y += $height + 10;
    $x = $_x;
    $height = 0;
} else {
    $x += $width + 10;
}

if ($n % 4 == 0 && $n != $pageCount) {
    $pdf->AddPage();
    $x = $_x;
    $y = $_y;
}

}
`

502 Gateway Error

I am seeing 502 gateway errors when simply instantiating the FPDI class:

use FPDI;
// ...
$pdf = new FPDI();

My environment is as follows:

  • PHP 7.1
  • Ubuntu 16.04
  • Laravel Homestead Vagrant VM

Not working in Laravel 5.4

I'm using fpdf and fpdi in my laravel project, I want to skip pages from my original pdf and output modified pdf, but is showing the following error
fpdi-error

Here is my code:

require_once('fpdf.php');
require_once "fpdi.php";
$pdf = new FPDI(); //FPDI extends TCPDF
$pageCount = $pdf->setSourceFile('Seeking-Civility.pdf');

// Array of pages to skip -- modify this to fit your needs
$skipPages = [21,22,23,24,25,26,27,28,29];

// Add all pages of source to new document
for( $pageNo=1; $pageNo<=$pageCount; $pageNo++ )
{
// Skip undesired pages
if( in_array($pageNo,$skipPages) )
continue;

//  Add page to the document
$templateID = $pdf->importPage($pageNo);
$pdf->getTemplateSize($templateID);
$pdf->addPage();
$pdf->useTemplate($templateID);

}

$pdf->Output();

Pdf file whith png and without compression needs license

Hello, i'm try parse simple pdf file without compression and can't do that with free licence. It's okey?
This document probably uses a compression technique which is not supported by the free parser shipped with FPDI
PDF file version is 1.3

Place Text Over Imported PDF Content

When I import a PDF and place text onto the document is shows up behind imported content/images. Is there a way to force the new text to display over the imported PDF content?

PHP 7.1 compatibility

Hi, we currently use this library on moodle core.

Doing some compatibility tests on the new php version (7.1) we noticed a error on this line.

_Exception - Call to undefined method FPDF_TPL::prepareValue()

Apparently there were some changes on the way php handles inheritance, probably that's why this works fine on PHP7 but not on 7.1

`setPageFormat()` parameter documentation is incorrect

Looks like the documentation for the setPageFormat method signature is backwards.

In ./setasign/fpdi/src/FpdfTpl.php:

   /**
     * Set the page format of the current page.
     *
     * @param string $orientation "L" for landscape, "P" for portrait.
     * @param array $size An array with two values defining the size.
     */
    public function setPageFormat($size, $orientation)

But the documentation states:
https://manuals.setasign.com/api-reference/fpdi2/c/setasign.Fpdi.Fpdi#method_setPageFormat

Parameters
$size : string
"L" for landscape, "P" for portrait.

$orientation : array
An array with two values defining the size.

Minor clerical issue that left me scratching my head for a good 15 minutes 🤕

pdf_parser.php should be in separate package

Hi there!

To my mind pdf_parser.php file should be in the separate package. The reason is that you don't include it in autoload because you'd like to be able to load another parser dynamically. But this causes a lot of errors for your awesome package users - there are a lot of similar issue here.

Let me describe my error shortly.
I use Magento 1.9 with mPDF package (it depends on your package). Magento has "cascade" autoloader, then, while composer autoloader is not able to autoload pdf_parser.php, it gives control to Varient Autoloader. This autloader create a "path" from file name with dashes, so it's looking for this file in "Pdf/Parser.php", that's wrong. I've spent a half of day to investigate this problem.

So i think the good solution for you and for all users is to move pdf_parser.php to separate package, add this file of package autoload and require in during FPDI installation.

Regards, Nikolay

Issue with using class_exists() without second parameter ($autoloading) false

Hi,

I have issue with using library because of using class_exist() without second parameter false. It cause issue, since it try to autoload file using autoloader and it not even come to line with require_once(...). I suppose it is same with other places where class_exist() is used without second parameter to check is class exist before file is required with require_once().

My environment:

  • Vagrant box
  • Ubuntu 16.04
  • PHP 7.1
  • Yii Framework 1.1.17

Fatal Error: require once

After installing by composer when I create new FPDI instance I have got an error related to class_exists and autoload: Fatal Error: require_once(): Failed opening required setasign/Fpdi/FpdiPdfParser.php...

...
"setasign/fpdf": "^1.8",
"setasign/fpdi": "^2.0"
},

Optimize closing of file handle in StreamReader class

The destructor of the StreamReader isn't called by unsetting the FPDI instance but after the garbadge collector was executed (at least it looks like that).

We should evaluate this situation and maybe we should trigger a "close the handles" through the FPDI instance directly.

Anyone Help Fpdi::Code128

When I try to generate a bar code I find the following:

Call to undefined method setasign\Fpdi\Fpdi::Code128

Anyone solved this?

$pdf = new Fpdi\Fpdi();
// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile(pdf.pdf');
// import page 1
$tplId = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 100 mm
$pdf->useTemplate($tplId, 10, 10, 100);

$pdf->Code128(102, 89, $codigoBarras, 100, 15);
$pdf->SetXY(102, 104);
$pdf->Write(5, $textoBarras);

$pdf->Output();

File Size when Split a PDF

Hello there, first of all, thankyou so much, your collection of PHP classes is helping me a lot!

I'm using with sucess PFDI to split one pdf in many others separated files, but my problem is the file size.

I got one pdf with aprox 6.30 MB and 185 pages, and split him in 185 separated PDFs files, but thes 185 PDFs are consuming aprox 766MB in the disk! Each separeted PDF has about 5.5MB.

My question is: how can I make the separeted files smaller?

`for ($currentPage = 1; $currentPage <= count($pagesPF); $currentPage++)
{
$pageParsed = $pagesPF[$currentPage-1]; //$pagesPF has all pages of PDF file
$pageText = preg_replace('/(\s)/', '', $pageParsed->getText()); //extract the text of PDF, removing the spaces
$employeeCode = getEmployeeCode($pageText); //get employee Code (regex)

$employees[$employeeCode][] = $currentPage; //manage a list of employees code


if(!is_null($employeeCode)) // I got an Employee Code?
{
	$new_pdf 	= new \setasign\Fpdi\Fpdi(); //begin to split into separeted files

	$new_pdf->setSourceFile($pdfFile); //path of PDF file in server

	//import the current Page to the new PDF
	$pageId 	= $new_pdf->importPage($currentPage);
	$size 		= $new_pdf->getTemplatesize($pageId);
	$new_pdf->AddPage($size['orientation'], $size);
	$new_pdf->useTemplate($pageId); 

	//save the separeted PDF file
	try
	{

		$employeeFile	= $employeeCode.'_'.count($employees[$employeeCode]).".pdf";
		$return[]		= $employeeFile;
		$new_filename 	= $end_directory.$employeeFile;

		$new_pdf->Output($new_filename, "F");
	}
	catch (Exception $e)
	{
		echo 'Caught exception: ',  $e->getMessage(), "\n";
	}
}

}
`

FPDI merge PDF in url

`use \setasign\Fpdi;

require_once('FPDi/vendor/setasign/fpdf/fpdf.php');
require_once('FPDi/vendor/autoload.php');

// define some files to concatenate
$files = array(
'Sample Book/1 p.front. (0).pdf',
'Sample Book/2 np..pdf.pdf',
'Sample Book/3 np..pdf.pdf'
);

// initiate FPDI
$pdf = new Fpdi\Fpdi();

// iterate through the files
foreach ($files AS $file) {
// get the page count

$pageCount = $pdf->setSourceFile($file);
// iterate through all pages

for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
// import a page
$templateId = $pdf->importPage($pageNo);
// get the size of the imported page
$size = $pdf->getTemplateSize($templateId);

// add a page with the same orientation and size
$pdf->AddPage($size['orientation'], $size);

// use the imported page
$pdf->useTemplate($templateId);

$pdf->SetFont('Helvetica');
$pdf->SetXY(5, 5);

}
}

// Output the new PDF
$pdf->Output(); `

Hello everyone, this is suppose a quick question; is it possible to put URL links like http://xwy.com/link_pdf/1.pdf, http://xwy.com/link_pdf/2.pdf and so on in $files variable as array?

I tried my best to understand and read the whole FPDI documentation but seems no lack.

The location for PDF goes on local only (filesystem) but how about remote URL where it contains pdf?

Thank you

Error unlink source file

It seems that there is an error when it comes to releasing the source pdf file, from which we extract a page.

If after extracting the page, we try to delete (unlink) the source file, an error of the type occurs:

Warning: unlink (xxxxxx.pdf): The resource is temporarily unavailable at D:\inetpub\wwwroot\newFile.php on line 34

The only way to fix it is to call the function gc_collect_cycles (); Before making the original link of the original pdf file.
newFile.txt

Attached a file in which line 29 commented, which is what makes the source file can be deleted

[Symfony] Attempted to load class

Hi,

I have install FPDI on my Symfony, I create a class for generate a PDF :

class MerchPDF extends \FPDI {.... }

and I have this error :

Attempted to load class "FPDI" from the global namespace.
Did you forget a "use" statement?

Are you an idea ?

Thanks

FDPI scale instead of crop

Hello

I am currently using FDPI to merge PDFs together and the size of the PDF that I get should be in A4. This works fine so far, however when the PDF that I am importing are bigger than A4, it is cropped. I would like it to become A4 but not cropped and instead scaled down.

Is there a possibility for this?

Here is my code:

                                    // Merging of the existing PDF pages to the final PDF
                                    $pageCount = $tcpdfObject->setSourceFile($fileUniqueName);
                                    for ($i = 1; $i <= $pageCount; $i++) {
                                          $tplIdx = $tcpdfObject->importPage($i, '');
                                          $specs = $tcpdfObject->getTemplateSize($tplIdx);
                                          $tcpdfObject->addPage($specs['h'] > $specs['w'] ? 'P' : 'L');
                                          $tcpdfObject->useTemplate($tplIdx, null, null, 0, 0, false);
                                    }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.