Add PDF Survey Importer with smart Thai questionnaire parser and preview editor

This commit is contained in:
pongpon pitisuk
2026-09-13 15:44:22 +07:00
parent a68bddb5c0
commit e0ed82fa74
75 changed files with 15407 additions and 10 deletions
+10
View File
@@ -0,0 +1,10 @@
<?php
// autoload_files.php @generated by Composer
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
);
+1
View File
@@ -6,4 +6,5 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Smalot\\PdfParser\\' => array($vendorDir . '/smalot/pdfparser/src'),
);
+1
View File
@@ -6,5 +6,6 @@ $vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
'PHPMailer\\PHPMailer\\' => array($vendorDir . '/phpmailer/phpmailer/src'),
);
+12
View File
@@ -33,6 +33,18 @@ class ComposerAutoloaderInit4d849b133858a2b1e2a637fe0f7dade4
$loader->register(true);
$filesToLoad = \Composer\Autoload\ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4::$files;
$requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
require $file;
}
}, null, null);
foreach ($filesToLoad as $fileIdentifier => $file) {
$requireFile($fileIdentifier, $file);
}
return $loader;
}
}
+23
View File
@@ -6,7 +6,15 @@ namespace Composer\Autoload;
class ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
);
public static $prefixLengthsPsr4 = array (
'S' =>
array (
'Symfony\\Polyfill\\Mbstring\\' => 26,
),
'P' =>
array (
'PHPMailer\\PHPMailer\\' => 20,
@@ -14,12 +22,26 @@ class ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4
);
public static $prefixDirsPsr4 = array (
'Symfony\\Polyfill\\Mbstring\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
),
'PHPMailer\\PHPMailer\\' =>
array (
0 => __DIR__ . '/..' . '/phpmailer/phpmailer/src',
),
);
public static $prefixesPsr0 = array (
'S' =>
array (
'Smalot\\PdfParser\\' =>
array (
0 => __DIR__ . '/..' . '/smalot/pdfparser/src',
),
),
);
public static $classMap = array (
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
@@ -41,6 +63,7 @@ class ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4::$prefixesPsr0;
$loader->classMap = ComposerStaticInit4d849b133858a2b1e2a637fe0f7dade4::$classMap;
}, null, ClassLoader::class);
+142
View File
@@ -85,6 +85,148 @@
],
"install-path": "../phpmailer/phpmailer"
},
{
"name": "smalot/pdfparser",
"version": "v2.12.5",
"version_normalized": "2.12.5.0",
"source": {
"type": "git",
"url": "https://github.com/smalot/pdfparser.git",
"reference": "2cfa0d92bd557875c9f52a75fde0e8392302a354"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/smalot/pdfparser/zipball/2cfa0d92bd557875c9f52a75fde0e8392302a354",
"reference": "2cfa0d92bd557875c9f52a75fde0e8392302a354",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"ext-zlib": "*",
"php": ">=7.1",
"symfony/polyfill-mbstring": "^1.18"
},
"time": "2026-04-17T11:37:58+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"Smalot\\PdfParser\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Sebastien MALOT",
"email": "sebastien@malot.fr"
}
],
"description": "Pdf parser library. Can read and extract information from pdf file.",
"homepage": "https://www.pdfparser.org",
"keywords": [
"extract",
"parse",
"parser",
"pdf",
"text"
],
"support": {
"issues": "https://github.com/smalot/pdfparser/issues",
"source": "https://github.com/smalot/pdfparser/tree/v2.12.5"
},
"install-path": "../smalot/pdfparser"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.38.2",
"version_normalized": "1.38.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
"reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=7.2"
},
"provide": {
"ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"time": "2026-05-27T06:59:30+00:00",
"type": "library",
"extra": {
"thanks": {
"url": "https://github.com/symfony/polyfill",
"name": "symfony/polyfill"
}
},
"installation-source": "dist",
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/polyfill-mbstring"
},
{
"name": "tecnickcom/tcpdf",
"version": "6.11.3",
+24 -6
View File
@@ -1,9 +1,9 @@
<?php return array(
'root' => array(
'name' => '__root__',
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => null,
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => 'a68bddb5c0fb0fc5a5b0bfe6d7d886fe6cb143d8',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -11,9 +11,9 @@
),
'versions' => array(
'__root__' => array(
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => null,
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => 'a68bddb5c0fb0fc5a5b0bfe6d7d886fe6cb143d8',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -28,6 +28,24 @@
'aliases' => array(),
'dev_requirement' => false,
),
'smalot/pdfparser' => array(
'pretty_version' => 'v2.12.5',
'version' => '2.12.5.0',
'reference' => '2cfa0d92bd557875c9f52a75fde0e8392302a354',
'type' => 'library',
'install_path' => __DIR__ . '/../smalot/pdfparser',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/polyfill-mbstring' => array(
'pretty_version' => 'v1.38.2',
'version' => '1.38.2.0',
'reference' => 'd3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
'aliases' => array(),
'dev_requirement' => false,
),
'tecnickcom/tcpdf' => array(
'pretty_version' => '6.11.3',
'version' => '6.11.3.0',
+2 -2
View File
@@ -4,8 +4,8 @@
$issues = array();
if (!(PHP_VERSION_ID >= 70100)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.';
if (!(PHP_VERSION_ID >= 70200)) {
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
}
if ($issues) {