<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
- <component name="PublishConfigData" autoUpload="Always" serverName="toolbox.fluidbook.com" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false" showAutoUploadSettingsWarning="false">
+ <component name="PublishConfigData" autoUpload="Always" serverName="alphaville.cubedesigners.com" remoteFilesAllowedToDisappearOnAutoupload="false" confirmBeforeUploading="false" showAutoUploadSettingsWarning="false">
<option name="confirmBeforeUploading" value="false" />
<serverData>
+ <paths name="alpha.toolbox.fluidbook.com">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ <paths name="alpha.toolbox.fluidbook.com (Host)">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
<paths name="alphaville.cubedesigners.com">
<serverdata>
<mappings>
</mappings>
</serverdata>
</paths>
+ <paths name="extranet.cubedesigners.com (Host)">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
<paths name="extranet.preventicom.com">
<serverdata>
<mappings>
</mappings>
</serverdata>
</paths>
- <paths name="pro.cubjeans.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
<paths name="simeox.dev.cubedesigners.com">
<serverdata>
<mappings>
</mappings>
</serverdata>
</paths>
- <paths name="vps-e87c4d02.vps.ovh.net">
+ <paths name="v4.fluidbook.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
- <paths name="workshop.fluidbook.com">
+ <paths name="vps-e87c4d02.vps.ovh.net">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
- <paths name="www.adangelis.com">
+ <paths name="workshop.fluidbook.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
- <paths name="www.animeland.com">
+ <paths name="www.adangelis.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
- <paths name="www.cubjeans.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
<paths name="www.detouteslescouleurs.com">
<serverdata>
<mappings>
</mappings>
</serverdata>
</paths>
- <paths name="www.enko-running-shoes.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
<paths name="www.eurofinsadmebioanalyses.com">
<serverdata>
<mappings>
</mappings>
</serverdata>
</paths>
- <paths name="www.kadreo.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
<paths name="www.mdryvescouzy.com">
<serverdata>
<mappings>
</mappings>
</serverdata>
</paths>
- <paths name="www.preventicom.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
- <paths name="www.rbcmobilier.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
- <paths name="www.renversez.com">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
- <paths name="www.sycomore-am.com (1)">
- <serverdata>
- <mappings>
- <mapping local="$PROJECT_DIR$" web="/" />
- </mappings>
- </serverdata>
- </paths>
</serverData>
<option name="myAutoUpload" value="ALWAYS" />
</component>
use DOMNode;
use DOMXPath;
use Cubist\PDF\CommandLine\FWSTK;
-use Illuminate\Support\Facades\Log;
class PDFTools
{
}
- public static function makeBaseSVGFile($in, $out, $page)
+ public static function makeBaseSVGFile($in, $out, $page, $attempts = 3)
{
$pdftocairo = new CommandLine('pdftocairo');
$pdftocairo->setArg('f', $page);
$pdftocairo->setArg(null, $in);
$pdftocairo->setArg(null, $out);
$pdftocairo->execute();
+
+ if (self::hasPopplerError($pdftocairo->getOutput())) {
+ if ($attempts > 0) {
+ static::makeBaseSVGFile($in, $out, $page, $attempts - 1);
+ } else {
+ unlink($out);
+ }
+ }
}
public static function makeTextSVGFile($in, $out)
$antialiasing = $antialiasing ? 'yes' : 'no';
$freetype = $texts ? 'yes' : 'no';
// Exporte les fichiers
- $pdftoppm = new CommandLine('pdftoppm', null, true);
+ $pdftoppm = new CommandLine('pdftoppm', null, true, 'pdftoppm_' . ($texts ? 't' : 'h') . '_' . (round($resolution)) . '_');
$pdftoppm->setArg('f', $page);
$pdftoppm->setArg('l', $page);
$pdftoppm->setArg('-cropbox');
if (null !== $height) {
$pdftoppm->setArg('-scale-to-y ' . $height);
}
+ if ($format === 'jpg') {
+ $pdftoppm->setArg('-jpeg');
+ $pdftoppm->setArg('-jpegopt "quality=' . $quality . '"');
+ } else if ($format === 'png') {
+ $pdftoppm->setArg('-png');
+ }
$pdftoppm->setArg(null, $in);
$pdftoppm->setArg(null, $tmp);
$pdftoppm->execute();
- $tmp .= '.ppm';
+ $tmp .= '.' . $format;
+
+ if (self::hasPopplerError($pdftoppm->getOutput())) {
+ unlink($tmp);
+ $pdftoppm->error_log();
+ return;
+ }
+
+ if (file_exists($tmp)) {
+ rename($tmp, $out);
+ } else {
+ $pdftoppm->error_log();
+ }
+ }
- $output = $pdftoppm->getOutput();
+ protected static function hasPopplerError($output)
+ {
$errors = [
- //'end of file inside dictionary',
+ 'end of file inside',
'leftover args in content stream',
'document stream is empty',
//'premature end of data segment',
//'couldn\'t find trailer dictionary',
//'invalid xref entry',
//'incorrect stream length',
- //'try to reconstruct',
+ 'try to reconstruct',
//'error opening pdf file',
];
foreach ($errors as $error) {
if (stristr($output, $error)) {
- unlink($tmp);
- $pdftoppm->debug();
- return;
+ return true;
}
}
-
-
- if (file_exists($tmp)) {
- if ($format === 'jpg') {
- $cjpeg = new CommandLine('cjpeg', null, true);
- $cjpeg->setArg('-quality ' . ($quality + 6));
- $cjpeg->setArg('-outfile ' . $out);
- $cjpeg->setArg(null, $tmp);
- $cjpeg->execute();
- } else if ($format === 'png') {
- $pnmtopng = new CommandLine('pnmtopng', $out, false);
- $pnmtopng->setArg('-background white');
- $pnmtopng->setArg(null, $tmp);
- $pnmtopng->execute();
- }
- unlink($tmp);
- } else {
- $pdftoppm->debug();
- }
+ return false;
}
public static function getThumbFromPDF($pdf, $page, $format = 'jpg')