mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-06-04 16:22:01 +00:00
Merge branch 'main' into session_2025_03_22
This commit is contained in:
commit
e76e83c427
49
.github/workflows/PR-Demo-Comment-with-react.yml
vendored
49
.github/workflows/PR-Demo-Comment-with-react.yml
vendored
@ -37,6 +37,7 @@ jobs:
|
|||||||
pr_repository: ${{ steps.get-pr-info.outputs.repository }}
|
pr_repository: ${{ steps.get-pr-info.outputs.repository }}
|
||||||
pr_ref: ${{ steps.get-pr-info.outputs.ref }}
|
pr_ref: ${{ steps.get-pr-info.outputs.ref }}
|
||||||
comment_id: ${{ github.event.comment.id }}
|
comment_id: ${{ github.event.comment.id }}
|
||||||
|
enable_security: ${{ steps.check-security-flag.outputs.enable_security }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Harden Runner
|
- name: Harden Runner
|
||||||
@ -84,6 +85,19 @@ jobs:
|
|||||||
core.setOutput('repository', repository);
|
core.setOutput('repository', repository);
|
||||||
core.setOutput('ref', pr.head.ref);
|
core.setOutput('ref', pr.head.ref);
|
||||||
|
|
||||||
|
- name: Check for security/login flag
|
||||||
|
id: check-security-flag
|
||||||
|
env:
|
||||||
|
COMMENT_BODY: ${{ github.event.comment.body }}
|
||||||
|
run: |
|
||||||
|
if [[ "$COMMENT_BODY" == *"security"* ]] || [[ "$COMMENT_BODY" == *"login"* ]]; then
|
||||||
|
echo "Security flags detected in comment"
|
||||||
|
echo "enable_security=true" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "No security flags detected in comment"
|
||||||
|
echo "enable_security=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Add 'in_progress' reaction to comment
|
- name: Add 'in_progress' reaction to comment
|
||||||
id: add-eyes-reaction
|
id: add-eyes-reaction
|
||||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||||
@ -140,9 +154,14 @@ jobs:
|
|||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
|
|
||||||
- name: Run Gradle Command
|
- name: Run Gradle Command
|
||||||
run: ./gradlew clean build
|
run: |
|
||||||
|
if [ "${{ needs.check-comment.outputs.enable_security }}" == "true" ]; then
|
||||||
|
export DOCKER_ENABLE_SECURITY=true
|
||||||
|
else
|
||||||
|
export DOCKER_ENABLE_SECURITY=false
|
||||||
|
fi
|
||||||
|
./gradlew clean build
|
||||||
env:
|
env:
|
||||||
DOCKER_ENABLE_SECURITY: false
|
|
||||||
STIRLING_PDF_DESKTOP_UI: false
|
STIRLING_PDF_DESKTOP_UI: false
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
@ -179,8 +198,19 @@ jobs:
|
|||||||
- name: Deploy to VPS
|
- name: Deploy to VPS
|
||||||
id: deploy
|
id: deploy
|
||||||
run: |
|
run: |
|
||||||
|
# Set security settings based on flags
|
||||||
|
if [ "${{ needs.check-comment.outputs.enable_security }}" == "true" ]; then
|
||||||
|
DOCKER_SECURITY="true"
|
||||||
|
LOGIN_SECURITY="true"
|
||||||
|
SECURITY_STATUS="🔒 Security Enabled"
|
||||||
|
else
|
||||||
|
DOCKER_SECURITY="false"
|
||||||
|
LOGIN_SECURITY="false"
|
||||||
|
SECURITY_STATUS="Security Disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
# First create the docker-compose content locally
|
# First create the docker-compose content locally
|
||||||
cat > docker-compose.yml << 'EOF'
|
cat > docker-compose.yml << EOF
|
||||||
version: '3.3'
|
version: '3.3'
|
||||||
services:
|
services:
|
||||||
stirling-pdf:
|
stirling-pdf:
|
||||||
@ -193,8 +223,8 @@ jobs:
|
|||||||
- /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/config:/configs:rw
|
- /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/config:/configs:rw
|
||||||
- /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/logs:/logs:rw
|
- /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/logs:/logs:rw
|
||||||
environment:
|
environment:
|
||||||
DOCKER_ENABLE_SECURITY: "false"
|
DOCKER_ENABLE_SECURITY: "${DOCKER_SECURITY}"
|
||||||
SECURITY_ENABLELOGIN: "false"
|
SECURITY_ENABLELOGIN: "${LOGIN_SECURITY}"
|
||||||
SYSTEM_DEFAULTLOCALE: en-GB
|
SYSTEM_DEFAULTLOCALE: en-GB
|
||||||
UI_APPNAME: "Stirling-PDF PR#${{ needs.check-comment.outputs.pr_number }}"
|
UI_APPNAME: "Stirling-PDF PR#${{ needs.check-comment.outputs.pr_number }}"
|
||||||
UI_HOMEDESCRIPTION: "PR#${{ needs.check-comment.outputs.pr_number }} for Stirling-PDF Latest"
|
UI_HOMEDESCRIPTION: "PR#${{ needs.check-comment.outputs.pr_number }} for Stirling-PDF Latest"
|
||||||
@ -208,7 +238,7 @@ jobs:
|
|||||||
# Then copy the file and execute commands
|
# Then copy the file and execute commands
|
||||||
scp -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null docker-compose.yml ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }}:/tmp/docker-compose.yml
|
scp -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null docker-compose.yml ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }}:/tmp/docker-compose.yml
|
||||||
|
|
||||||
ssh -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -T ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }} << 'ENDSSH'
|
ssh -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -T ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }} << ENDSSH
|
||||||
# Create PR-specific directories
|
# Create PR-specific directories
|
||||||
mkdir -p /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/{data,config,logs}
|
mkdir -p /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/{data,config,logs}
|
||||||
|
|
||||||
@ -221,6 +251,9 @@ jobs:
|
|||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
ENDSSH
|
ENDSSH
|
||||||
|
|
||||||
|
# Set output for use in PR comment
|
||||||
|
echo "security_status=${SECURITY_STATUS}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Add success reaction to comment
|
- name: Add success reaction to comment
|
||||||
if: success()
|
if: success()
|
||||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||||
@ -270,11 +303,13 @@ jobs:
|
|||||||
const { GITHUB_REPOSITORY } = process.env;
|
const { GITHUB_REPOSITORY } = process.env;
|
||||||
const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/');
|
const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/');
|
||||||
const prNumber = ${{ needs.check-comment.outputs.pr_number }};
|
const prNumber = ${{ needs.check-comment.outputs.pr_number }};
|
||||||
|
const securityStatus = process.env.security_status || "Security Disabled";
|
||||||
|
|
||||||
const deploymentUrl = `http://${{ secrets.VPS_HOST }}:${prNumber}`;
|
const deploymentUrl = `http://${{ secrets.VPS_HOST }}:${prNumber}`;
|
||||||
const commentBody = `## 🚀 PR Test Deployment\n\n` +
|
const commentBody = `## 🚀 PR Test Deployment\n\n` +
|
||||||
`Your PR has been deployed for testing!\n\n` +
|
`Your PR has been deployed for testing!\n\n` +
|
||||||
`🔗 **Test URL:** [${deploymentUrl}](${deploymentUrl})\n\n` +
|
`🔗 **Test URL:** [${deploymentUrl}](${deploymentUrl})\n` +
|
||||||
|
`${securityStatus}\n\n` +
|
||||||
`This deployment will be automatically cleaned up when the PR is closed.\n\n`;
|
`This deployment will be automatically cleaned up when the PR is closed.\n\n`;
|
||||||
|
|
||||||
await github.rest.issues.createComment({
|
await github.rest.issues.createComment({
|
||||||
|
16
README.md
16
README.md
@ -124,32 +124,32 @@ Stirling-PDF currently supports 39 languages!
|
|||||||
| Croatian (Hrvatski) (hr_HR) |  |
|
| Croatian (Hrvatski) (hr_HR) |  |
|
||||||
| Czech (Česky) (cs_CZ) |  |
|
| Czech (Česky) (cs_CZ) |  |
|
||||||
| Danish (Dansk) (da_DK) |  |
|
| Danish (Dansk) (da_DK) |  |
|
||||||
| Dutch (Nederlands) (nl_NL) |  |
|
| Dutch (Nederlands) (nl_NL) |  |
|
||||||
| English (English) (en_GB) |  |
|
| English (English) (en_GB) |  |
|
||||||
| English (US) (en_US) |  |
|
| English (US) (en_US) |  |
|
||||||
| French (Français) (fr_FR) |  |
|
| French (Français) (fr_FR) |  |
|
||||||
| German (Deutsch) (de_DE) |  |
|
| German (Deutsch) (de_DE) |  |
|
||||||
| Greek (Ελληνικά) (el_GR) |  |
|
| Greek (Ελληνικά) (el_GR) |  |
|
||||||
| Hindi (हिंदी) (hi_IN) |  |
|
| Hindi (हिंदी) (hi_IN) |  |
|
||||||
| Hungarian (Magyar) (hu_HU) |  |
|
| Hungarian (Magyar) (hu_HU) |  |
|
||||||
| Indonesian (Bahasa Indonesia) (id_ID) |  |
|
| Indonesian (Bahasa Indonesia) (id_ID) |  |
|
||||||
| Irish (Gaeilge) (ga_IE) |  |
|
| Irish (Gaeilge) (ga_IE) |  |
|
||||||
| Italian (Italiano) (it_IT) |  |
|
| Italian (Italiano) (it_IT) |  |
|
||||||
| Japanese (日本語) (ja_JP) |  |
|
| Japanese (日本語) (ja_JP) |  |
|
||||||
| Korean (한국어) (ko_KR) |  |
|
| Korean (한국어) (ko_KR) |  |
|
||||||
| Norwegian (Norsk) (no_NB) |  |
|
| Norwegian (Norsk) (no_NB) |  |
|
||||||
| Persian (فارسی) (fa_IR) |  |
|
| Persian (فارسی) (fa_IR) |  |
|
||||||
| Polish (Polski) (pl_PL) |  |
|
| Polish (Polski) (pl_PL) |  |
|
||||||
| Portuguese (Português) (pt_PT) |  |
|
| Portuguese (Português) (pt_PT) |  |
|
||||||
| Portuguese Brazilian (Português) (pt_BR) |  |
|
| Portuguese Brazilian (Português) (pt_BR) |  |
|
||||||
| Romanian (Română) (ro_RO) |  |
|
| Romanian (Română) (ro_RO) |  |
|
||||||
| Russian (Русский) (ru_RU) |  |
|
| Russian (Русский) (ru_RU) |  |
|
||||||
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) |  |
|
||||||
| Simplified Chinese (简体中文) (zh_CN) |  |
|
| Simplified Chinese (简体中文) (zh_CN) |  |
|
||||||
| Slovakian (Slovensky) (sk_SK) |  |
|
| Slovakian (Slovensky) (sk_SK) |  |
|
||||||
| Slovenian (Slovenščina) (sl_SI) |  |
|
| Slovenian (Slovenščina) (sl_SI) |  |
|
||||||
| Spanish (Español) (es_ES) |  |
|
| Spanish (Español) (es_ES) |  |
|
||||||
| Swedish (Svenska) (sv_SE) |  |
|
| Swedish (Svenska) (sv_SE) |  |
|
||||||
| Thai (ไทย) (th_TH) |  |
|
| Thai (ไทย) (th_TH) |  |
|
||||||
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
| Tibetan (བོད་ཡིག་) (zh_BO) |  |
|
||||||
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
| Traditional Chinese (繁體中文) (zh_TW) |  |
|
||||||
|
@ -29,7 +29,7 @@ ext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "stirling.software"
|
group = "stirling.software"
|
||||||
version = "0.45.4"
|
version = "0.45.5"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
// 17 is lowest but we support and recommend 21
|
// 17 is lowest but we support and recommend 21
|
||||||
|
@ -53,24 +53,37 @@ public class KeygenLicenseVerifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public License verifyLicense(String licenseKeyOrCert) {
|
public License verifyLicense(String licenseKeyOrCert) {
|
||||||
|
License license;
|
||||||
|
|
||||||
if (isCertificateLicense(licenseKeyOrCert)) {
|
if (isCertificateLicense(licenseKeyOrCert)) {
|
||||||
log.info("Detected certificate-based license. Processing...");
|
log.info("Detected certificate-based license. Processing...");
|
||||||
return resultToEnum(verifyCertificateLicense(licenseKeyOrCert), License.ENTERPRISE);
|
boolean isValid = verifyCertificateLicense(licenseKeyOrCert);
|
||||||
|
if (isValid) {
|
||||||
|
license = isEnterpriseLicense ? License.ENTERPRISE : License.PRO;
|
||||||
|
} else {
|
||||||
|
license = License.NORMAL;
|
||||||
|
}
|
||||||
} else if (isJWTLicense(licenseKeyOrCert)) {
|
} else if (isJWTLicense(licenseKeyOrCert)) {
|
||||||
log.info("Detected JWT-style license key. Processing...");
|
log.info("Detected JWT-style license key. Processing...");
|
||||||
return resultToEnum(verifyJWTLicense(licenseKeyOrCert), License.ENTERPRISE);
|
boolean isValid = verifyJWTLicense(licenseKeyOrCert);
|
||||||
|
if (isValid) {
|
||||||
|
license = isEnterpriseLicense ? License.ENTERPRISE : License.PRO;
|
||||||
|
} else {
|
||||||
|
license = License.NORMAL;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log.info("Detected standard license key. Processing...");
|
log.info("Detected standard license key. Processing...");
|
||||||
return resultToEnum(verifyStandardLicense(licenseKeyOrCert), License.PRO);
|
boolean isValid = verifyStandardLicense(licenseKeyOrCert);
|
||||||
|
if (isValid) {
|
||||||
|
license = isEnterpriseLicense ? License.ENTERPRISE : License.PRO;
|
||||||
|
} else {
|
||||||
|
license = License.NORMAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return license;
|
||||||
|
}
|
||||||
|
|
||||||
private License resultToEnum(boolean result, License option) {
|
private boolean isEnterpriseLicense = false;
|
||||||
if (result) {
|
|
||||||
return option;
|
|
||||||
}
|
|
||||||
return License.NORMAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isCertificateLicense(String license) {
|
private boolean isCertificateLicense(String license) {
|
||||||
return license != null && license.trim().startsWith(CERT_PREFIX);
|
return license != null && license.trim().startsWith(CERT_PREFIX);
|
||||||
@ -82,8 +95,6 @@ public class KeygenLicenseVerifier {
|
|||||||
|
|
||||||
private boolean verifyCertificateLicense(String licenseFile) {
|
private boolean verifyCertificateLicense(String licenseFile) {
|
||||||
try {
|
try {
|
||||||
log.info("Verifying certificate-based license");
|
|
||||||
|
|
||||||
String encodedPayload = licenseFile;
|
String encodedPayload = licenseFile;
|
||||||
// Remove the header
|
// Remove the header
|
||||||
encodedPayload = encodedPayload.replace(CERT_PREFIX, "");
|
encodedPayload = encodedPayload.replace(CERT_PREFIX, "");
|
||||||
@ -106,8 +117,6 @@ public class KeygenLicenseVerifier {
|
|||||||
encryptedData = (String) attrs.get("enc");
|
encryptedData = (String) attrs.get("enc");
|
||||||
encodedSignature = (String) attrs.get("sig");
|
encodedSignature = (String) attrs.get("sig");
|
||||||
algorithm = (String) attrs.get("alg");
|
algorithm = (String) attrs.get("alg");
|
||||||
|
|
||||||
log.info("Certificate algorithm: {}", algorithm);
|
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
log.error("Failed to parse license file: {}", e.getMessage());
|
log.error("Failed to parse license file: {}", e.getMessage());
|
||||||
return false;
|
return false;
|
||||||
@ -151,7 +160,6 @@ public class KeygenLicenseVerifier {
|
|||||||
private boolean verifyEd25519Signature(String encryptedData, String encodedSignature) {
|
private boolean verifyEd25519Signature(String encryptedData, String encodedSignature) {
|
||||||
try {
|
try {
|
||||||
log.info("Signature to verify: {}", encodedSignature);
|
log.info("Signature to verify: {}", encodedSignature);
|
||||||
log.info("Public key being used: {}", PUBLIC_KEY);
|
|
||||||
|
|
||||||
byte[] signatureBytes = Base64.getDecoder().decode(encodedSignature);
|
byte[] signatureBytes = Base64.getDecoder().decode(encodedSignature);
|
||||||
|
|
||||||
@ -185,7 +193,7 @@ public class KeygenLicenseVerifier {
|
|||||||
|
|
||||||
private boolean processCertificateData(String certData) {
|
private boolean processCertificateData(String certData) {
|
||||||
try {
|
try {
|
||||||
log.info("Processing certificate data: {}", certData);
|
|
||||||
|
|
||||||
JSONObject licenseData = new JSONObject(certData);
|
JSONObject licenseData = new JSONObject(certData);
|
||||||
JSONObject metaObj = licenseData.optJSONObject("meta");
|
JSONObject metaObj = licenseData.optJSONObject("meta");
|
||||||
@ -234,18 +242,9 @@ public class KeygenLicenseVerifier {
|
|||||||
applicationProperties.getPremium().setMaxUsers(users);
|
applicationProperties.getPremium().setMaxUsers(users);
|
||||||
log.info("License allows for {} users", users);
|
log.info("License allows for {} users", users);
|
||||||
}
|
}
|
||||||
|
isEnterpriseLicense = metadataObj.optBoolean("isEnterprise", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check maxUsers directly in attributes if present from policy definition
|
|
||||||
// if (attributesObj.has("maxUsers")) {
|
|
||||||
// int maxUsers = attributesObj.optInt("maxUsers", 0);
|
|
||||||
// if (maxUsers > 0) {
|
|
||||||
// applicationProperties.getPremium().setMaxUsers(maxUsers);
|
|
||||||
// log.info("License directly specifies {} max users",
|
|
||||||
// maxUsers);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Check license status if available
|
// Check license status if available
|
||||||
String status = attributesObj.optString("status", null);
|
String status = attributesObj.optString("status", null);
|
||||||
if (status != null
|
if (status != null
|
||||||
@ -388,9 +387,10 @@ public class KeygenLicenseVerifier {
|
|||||||
String policyId = policyObj.optString("id", "unknown");
|
String policyId = policyObj.optString("id", "unknown");
|
||||||
log.info("License uses policy: {}", policyId);
|
log.info("License uses policy: {}", policyId);
|
||||||
|
|
||||||
// Extract max users from policy if available (customize based on your policy
|
// Extract max users and isEnterprise from policy or metadata
|
||||||
// structure)
|
|
||||||
int users = policyObj.optInt("users", 0);
|
int users = policyObj.optInt("users", 0);
|
||||||
|
isEnterpriseLicense = policyObj.optBoolean("isEnterprise", false);
|
||||||
|
|
||||||
if (users > 0) {
|
if (users > 0) {
|
||||||
applicationProperties.getPremium().setMaxUsers(users);
|
applicationProperties.getPremium().setMaxUsers(users);
|
||||||
log.info("License allows for {} users", users);
|
log.info("License allows for {} users", users);
|
||||||
@ -402,12 +402,16 @@ public class KeygenLicenseVerifier {
|
|||||||
users = metadata.optInt("users", 1);
|
users = metadata.optInt("users", 1);
|
||||||
applicationProperties.getPremium().setMaxUsers(users);
|
applicationProperties.getPremium().setMaxUsers(users);
|
||||||
log.info("License allows for {} users (from metadata)", users);
|
log.info("License allows for {} users (from metadata)", users);
|
||||||
|
|
||||||
|
// Check for isEnterprise flag in metadata
|
||||||
|
isEnterpriseLicense = metadata.optBoolean("isEnterprise", false);
|
||||||
} else {
|
} else {
|
||||||
// Default value
|
// Default value
|
||||||
applicationProperties.getPremium().setMaxUsers(1);
|
applicationProperties.getPremium().setMaxUsers(1);
|
||||||
log.info("Using default of 1 user for license");
|
log.info("Using default of 1 user for license");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -494,6 +498,7 @@ public class KeygenLicenseVerifier {
|
|||||||
log.info("Validation detail: " + detail);
|
log.info("Validation detail: " + detail);
|
||||||
log.info("Validation code: " + code);
|
log.info("Validation code: " + code);
|
||||||
|
|
||||||
|
// Extract user count
|
||||||
int users =
|
int users =
|
||||||
jsonResponse
|
jsonResponse
|
||||||
.path("data")
|
.path("data")
|
||||||
@ -502,6 +507,16 @@ public class KeygenLicenseVerifier {
|
|||||||
.path("users")
|
.path("users")
|
||||||
.asInt(0);
|
.asInt(0);
|
||||||
applicationProperties.getPremium().setMaxUsers(users);
|
applicationProperties.getPremium().setMaxUsers(users);
|
||||||
|
|
||||||
|
// Extract isEnterprise flag
|
||||||
|
isEnterpriseLicense =
|
||||||
|
jsonResponse
|
||||||
|
.path("data")
|
||||||
|
.path("attributes")
|
||||||
|
.path("metadata")
|
||||||
|
.path("isEnterprise")
|
||||||
|
.asBoolean(false);
|
||||||
|
|
||||||
log.info(applicationProperties.toString());
|
log.info(applicationProperties.toString());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -20,6 +20,8 @@ import org.springframework.core.io.Resource;
|
|||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
import org.thymeleaf.spring6.SpringTemplateEngine;
|
import org.thymeleaf.spring6.SpringTemplateEngine;
|
||||||
|
|
||||||
|
import com.posthog.java.shaded.kotlin.text.Regex;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import stirling.software.SPDF.model.ApplicationProperties;
|
import stirling.software.SPDF.model.ApplicationProperties;
|
||||||
@ -107,6 +109,33 @@ public class AppConfig {
|
|||||||
return (rateLimit != null) ? Boolean.valueOf(rateLimit) : false;
|
return (rateLimit != null) ? Boolean.valueOf(rateLimit) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean(name = "uploadLimit")
|
||||||
|
public long uploadLimit() {
|
||||||
|
String maxUploadSize =
|
||||||
|
applicationProperties.getSystem().getFileUploadLimit() != null
|
||||||
|
? applicationProperties.getSystem().getFileUploadLimit()
|
||||||
|
: "";
|
||||||
|
|
||||||
|
if (maxUploadSize.isEmpty()) {
|
||||||
|
return 0;
|
||||||
|
} else if (!new Regex("^[1-9][0-9]{0,2}[KMGkmg][Bb]$").matches(maxUploadSize)) {
|
||||||
|
log.error(
|
||||||
|
"Invalid maxUploadSize format. Expected format: [1-9][0-9]{0,2}[KMGkmg][Bb], but got: {}",
|
||||||
|
maxUploadSize);
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
String unit = maxUploadSize.replaceAll("[1-9][0-9]{0,2}", "").toUpperCase();
|
||||||
|
String number = maxUploadSize.replaceAll("[KMGkmg][Bb]", "");
|
||||||
|
long size = Long.parseLong(number);
|
||||||
|
return switch (unit) {
|
||||||
|
case "KB" -> size * 1024;
|
||||||
|
case "MB" -> size * 1024 * 1024;
|
||||||
|
case "GB" -> size * 1024 * 1024 * 1024;
|
||||||
|
default -> 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Bean(name = "RunningInDocker")
|
@Bean(name = "RunningInDocker")
|
||||||
public boolean runningInDocker() {
|
public boolean runningInDocker() {
|
||||||
return Files.exists(Paths.get("/.dockerenv"));
|
return Files.exists(Paths.get("/.dockerenv"));
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package stirling.software.SPDF.controller.web;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@ControllerAdvice
|
||||||
|
public class GlobalUploadLimitWebController {
|
||||||
|
|
||||||
|
@Autowired() private long uploadLimit;
|
||||||
|
|
||||||
|
@ModelAttribute("uploadLimit")
|
||||||
|
public long populateUploadLimit() {
|
||||||
|
return uploadLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ModelAttribute("uploadLimitReadable")
|
||||||
|
public String populateReadableLimit() {
|
||||||
|
return humanReadableByteCount(uploadLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String humanReadableByteCount(long bytes) {
|
||||||
|
if (bytes < 1024) return bytes + " B";
|
||||||
|
int exp = (int) (Math.log(bytes) / Math.log(1024));
|
||||||
|
String pre = "KMGTPE".charAt(exp - 1) + "B";
|
||||||
|
return String.format("%.1f %s", bytes / Math.pow(1024, exp), pre);
|
||||||
|
}
|
||||||
|
}
|
@ -290,6 +290,7 @@ public class ApplicationProperties {
|
|||||||
private Boolean disableSanitize;
|
private Boolean disableSanitize;
|
||||||
private Boolean enableUrlToPDF;
|
private Boolean enableUrlToPDF;
|
||||||
private CustomPaths customPaths = new CustomPaths();
|
private CustomPaths customPaths = new CustomPaths();
|
||||||
|
private String fileUploadLimit;
|
||||||
|
|
||||||
public boolean isAnalyticsEnabled() {
|
public boolean isAnalyticsEnabled() {
|
||||||
return this.getEnableAnalytics() != null && this.getEnableAnalytics();
|
return this.getEnableAnalytics() != null && this.getEnableAnalytics();
|
||||||
|
@ -63,6 +63,8 @@ public class PostHogService {
|
|||||||
if (!applicationProperties.getSystem().isAnalyticsEnabled()) {
|
if (!applicationProperties.getSystem().isAnalyticsEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
properties.put("app_version", appVersion);
|
||||||
postHog.capture(uniqueId, eventName, properties);
|
postHog.capture(uniqueId, eventName, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=اختر ملفات PDF (2+)
|
|||||||
multiPdfDropPrompt=حدد (أو اسحب وأفلت) جميع ملفات PDF التي تحتاجها
|
multiPdfDropPrompt=حدد (أو اسحب وأفلت) جميع ملفات PDF التي تحتاجها
|
||||||
imgPrompt=اختر صورة
|
imgPrompt=اختر صورة
|
||||||
genericSubmit=إرسال
|
genericSubmit=إرسال
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف
|
processTimeWarning=تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف
|
||||||
pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
pageOrderPrompt=ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):
|
||||||
pageSelectionPrompt=اختيار الصفحات المخصص (أدخل قائمة بأرقام الصفحات مفصولة بفواصل 1،5،6 أو دوال مثل 2n+1):
|
pageSelectionPrompt=اختيار الصفحات المخصص (أدخل قائمة بأرقام الصفحات مفصولة بفواصل 1،5،6 أو دوال مثل 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDFləri Seç (2+)
|
|||||||
multiPdfDropPrompt=Ehtiyacınız olan bütün PDFləri seçin (və ya sürükləyib buraxın)
|
multiPdfDropPrompt=Ehtiyacınız olan bütün PDFləri seçin (və ya sürükləyib buraxın)
|
||||||
imgPrompt=Şəkil(lər)i Seç
|
imgPrompt=Şəkil(lər)i Seç
|
||||||
genericSubmit=Təsdiq Et
|
genericSubmit=Təsdiq Et
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Xəbərdarlıq: Bu proses fayl ölçüsündən asılı olaraq bir dəqiqəyə qədər vaxt ala bilər
|
processTimeWarning=Xəbərdarlıq: Bu proses fayl ölçüsündən asılı olaraq bir dəqiqəyə qədər vaxt ala bilər
|
||||||
pageOrderPrompt=Xüsusi Səhifə Ardıcıllığı (Vergüllə ayrılmış səhifə nömrələri listini və ya 2n+1 tərzində Funksiyalar daxil edin) :
|
pageOrderPrompt=Xüsusi Səhifə Ardıcıllığı (Vergüllə ayrılmış səhifə nömrələri listini və ya 2n+1 tərzində Funksiyalar daxil edin) :
|
||||||
pageSelectionPrompt=Xüsusi Səhifə Seçimi (1, 5, 6 tərzində vergüllə ayrılmış səhifə nömrələri listini və ya 2n+1 tərzində Funksiyalar daxil edin) :
|
pageSelectionPrompt=Xüsusi Səhifə Seçimi (1, 5, 6 tərzində vergüllə ayrılmış səhifə nömrələri listini və ya 2n+1 tərzində Funksiyalar daxil edin) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Изберете PDF (2+)
|
|||||||
multiPdfDropPrompt=Изберете (или плъзнете и пуснете) всички PDF файлове, от които се нуждаете
|
multiPdfDropPrompt=Изберете (или плъзнете и пуснете) всички PDF файлове, от които се нуждаете
|
||||||
imgPrompt=Изберете изображение(я)
|
imgPrompt=Изберете изображение(я)
|
||||||
genericSubmit=Подайте
|
genericSubmit=Подайте
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Предупреждение: Този процес може да отнеме до минута в зависимост от размера на файла
|
processTimeWarning=Предупреждение: Този процес може да отнеме до минута в зависимост от размера на файла
|
||||||
pageOrderPrompt=Персонализиран ред на страниците (Въведете разделен със запетаи списък с номера на страници или функции като 2n+1):
|
pageOrderPrompt=Персонализиран ред на страниците (Въведете разделен със запетаи списък с номера на страници или функции като 2n+1):
|
||||||
pageSelectionPrompt=Персонализиран избор на страница (Въведете списък с номера на страници 1,5,6, разделени със запетая, или функции като 2n+1) :
|
pageSelectionPrompt=Персонализиран избор на страница (Въведете списък с номера на страници 1,5,6, разделени със запетая, или функции като 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Selecciona PDFs (2+)
|
|||||||
multiPdfDropPrompt=Selecciona (o arrossega) els documents PDF
|
multiPdfDropPrompt=Selecciona (o arrossega) els documents PDF
|
||||||
imgPrompt=Selecciona Imatge(s)
|
imgPrompt=Selecciona Imatge(s)
|
||||||
genericSubmit=Envia
|
genericSubmit=Envia
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu
|
processTimeWarning=Alerta: Aquest procés pot tardar 1 minut depenent de la mida de l'arxiu
|
||||||
pageOrderPrompt=Ordre de Pàgines (Llista separada per comes) :
|
pageOrderPrompt=Ordre de Pàgines (Llista separada per comes) :
|
||||||
pageSelectionPrompt=Selecció de pàgines personalitzada (Introdueix una llista separada per comes de números de pàgina, 1,5,6 o funcions com 2n+1):
|
pageSelectionPrompt=Selecció de pàgines personalitzada (Introdueix una llista separada per comes de números de pàgina, 1,5,6 o funcions com 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Vyberte PDF soubory (2+)
|
|||||||
multiPdfDropPrompt=Vyberte (nebo přetáhněte) všechny požadované PDF soubory
|
multiPdfDropPrompt=Vyberte (nebo přetáhněte) všechny požadované PDF soubory
|
||||||
imgPrompt=Vyberte obrázek(y)
|
imgPrompt=Vyberte obrázek(y)
|
||||||
genericSubmit=Odeslat
|
genericSubmit=Odeslat
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Upozornění: Tento proces může trvat až minutu v závislosti na velikosti souboru
|
processTimeWarning=Upozornění: Tento proces může trvat až minutu v závislosti na velikosti souboru
|
||||||
pageOrderPrompt=Vlastní pořadí stránek (Zadejte seznam čísel stránek oddělených čárkou nebo funkci jako např. 2n+1):
|
pageOrderPrompt=Vlastní pořadí stránek (Zadejte seznam čísel stránek oddělených čárkou nebo funkci jako např. 2n+1):
|
||||||
pageSelectionPrompt=Vlastní výběr stránek (Zadejte seznam čísel stránek oddělených čárkou jako 1,5,6 nebo funkci jako např. 2n+1):
|
pageSelectionPrompt=Vlastní výběr stránek (Zadejte seznam čísel stránek oddělených čárkou jako 1,5,6 nebo funkci jako např. 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Vælg PDF-filerne (2+)
|
|||||||
multiPdfDropPrompt=Vælg (eller drag & drop) alle PDF-filerne du skal bruge
|
multiPdfDropPrompt=Vælg (eller drag & drop) alle PDF-filerne du skal bruge
|
||||||
imgPrompt=Vælg Billede(r)
|
imgPrompt=Vælg Billede(r)
|
||||||
genericSubmit=Indsend
|
genericSubmit=Indsend
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Advarsel: Denne proces kan tage op til et helt minut, alt efter størrelsen på filen
|
processTimeWarning=Advarsel: Denne proces kan tage op til et helt minut, alt efter størrelsen på filen
|
||||||
pageOrderPrompt=Brugerdefineret siderækkefølge (Indtast en kommasepareret liste af sidenumre eller funktioner som 2n+1) :
|
pageOrderPrompt=Brugerdefineret siderækkefølge (Indtast en kommasepareret liste af sidenumre eller funktioner som 2n+1) :
|
||||||
pageSelectionPrompt=Brugerdefineret sidevalg (Indtast en kommasepareret liste af sidenumre 1,5,6 eller funktioner som 2n+1) :
|
pageSelectionPrompt=Brugerdefineret sidevalg (Indtast en kommasepareret liste af sidenumre 1,5,6 eller funktioner som 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDFs auswählen(2+)
|
|||||||
multiPdfDropPrompt=Wählen Sie alle gewünschten PDFs aus (oder ziehen Sie sie per Drag & Drop hierhin)
|
multiPdfDropPrompt=Wählen Sie alle gewünschten PDFs aus (oder ziehen Sie sie per Drag & Drop hierhin)
|
||||||
imgPrompt=Wählen Sie ein Bild
|
imgPrompt=Wählen Sie ein Bild
|
||||||
genericSubmit=Absenden
|
genericSubmit=Absenden
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern
|
processTimeWarning=Achtung: Abhängig von der Dateigröße kann dieser Prozess bis zu einer Minute dauern
|
||||||
pageOrderPrompt=Seitenreihenfolge (Geben Sie eine durch Komma getrennte Liste von Seitenzahlen ein):
|
pageOrderPrompt=Seitenreihenfolge (Geben Sie eine durch Komma getrennte Liste von Seitenzahlen ein):
|
||||||
pageSelectionPrompt=Benutzerdefinierte Seitenauswahl (Geben Sie eine durch Kommas getrennte Liste von Seitenzahlen 1,5,6 oder Funktionen wie 2n+1 ein):
|
pageSelectionPrompt=Benutzerdefinierte Seitenauswahl (Geben Sie eine durch Kommas getrennte Liste von Seitenzahlen 1,5,6 oder Funktionen wie 2n+1 ein):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Επιλέξτε PDFs (2+)
|
|||||||
multiPdfDropPrompt=Επιλέξτε (ή σύρετε & αφήστε) όλα τα PDF που χρειάζεστε
|
multiPdfDropPrompt=Επιλέξτε (ή σύρετε & αφήστε) όλα τα PDF που χρειάζεστε
|
||||||
imgPrompt=Επιλέξτε εικόνα(ες)
|
imgPrompt=Επιλέξτε εικόνα(ες)
|
||||||
genericSubmit=Υποβολή
|
genericSubmit=Υποβολή
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Προειδοποίηση: Αυτή η διαδικασία μπορεί να διαρκέσει έως ένα λεπτό ανάλογα με το μέγεθος του αρχείου
|
processTimeWarning=Προειδοποίηση: Αυτή η διαδικασία μπορεί να διαρκέσει έως ένα λεπτό ανάλογα με το μέγεθος του αρχείου
|
||||||
pageOrderPrompt=Προσαρμοσμένη σειρά σελίδων (Εισάγετε μια λίστα αριθμών σελίδων χωρισμένη με κόμματα ή συναρτήσεις όπως 2n+1):
|
pageOrderPrompt=Προσαρμοσμένη σειρά σελίδων (Εισάγετε μια λίστα αριθμών σελίδων χωρισμένη με κόμματα ή συναρτήσεις όπως 2n+1):
|
||||||
pageSelectionPrompt=Προσαρμοσμένη επιλογή σελίδων (Εισάγετε μια λίστα αριθμών σελίδων χωρισμένη με κόμματα 1,5,6 ή συναρτήσεις όπως 2n+1):
|
pageSelectionPrompt=Προσαρμοσμένη επιλογή σελίδων (Εισάγετε μια λίστα αριθμών σελίδων χωρισμένη με κόμματα 1,5,6 ή συναρτήσεις όπως 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Select PDFs (2+)
|
|||||||
multiPdfDropPrompt=Select (or drag & drop) all PDFs you require
|
multiPdfDropPrompt=Select (or drag & drop) all PDFs you require
|
||||||
imgPrompt=Select Image(s)
|
imgPrompt=Select Image(s)
|
||||||
genericSubmit=Submit
|
genericSubmit=Submit
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Warning: This process can take up to a minute depending on file-size
|
processTimeWarning=Warning: This process can take up to a minute depending on file-size
|
||||||
pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :
|
pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Select PDFs (2+)
|
|||||||
multiPdfDropPrompt=Select (or drag & drop) all PDFs you require
|
multiPdfDropPrompt=Select (or drag & drop) all PDFs you require
|
||||||
imgPrompt=Select Image(s)
|
imgPrompt=Select Image(s)
|
||||||
genericSubmit=Submit
|
genericSubmit=Submit
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Warning: This process can take up to a minute depending on file-size
|
processTimeWarning=Warning: This process can take up to a minute depending on file-size
|
||||||
pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :
|
pageOrderPrompt=Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Seleccionar PDFs (2+)
|
|||||||
multiPdfDropPrompt=Seleccione (o arrastre y suelte) todos los PDFs que quiera
|
multiPdfDropPrompt=Seleccione (o arrastre y suelte) todos los PDFs que quiera
|
||||||
imgPrompt=Seleccionar Imagen(es)
|
imgPrompt=Seleccionar Imagen(es)
|
||||||
genericSubmit=Enviar
|
genericSubmit=Enviar
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo
|
processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo
|
||||||
pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma):
|
pageOrderPrompt=Orden de páginas (Introduzca una lista de números de página separados por coma):
|
||||||
pageSelectionPrompt=Selección de página personalizada (Intruduzca una lista de números de página separados por comas 1,5,6 o funciones como 2n+1) :
|
pageSelectionPrompt=Selección de página personalizada (Intruduzca una lista de números de página separados por comas 1,5,6 o funciones como 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Hautatu PDFak (2+)
|
|||||||
multiPdfDropPrompt=Hautatu (edo arrastatu eta jaregin) nahi dituzun PDFak
|
multiPdfDropPrompt=Hautatu (edo arrastatu eta jaregin) nahi dituzun PDFak
|
||||||
imgPrompt=Hautatu Irudia(k)
|
imgPrompt=Hautatu Irudia(k)
|
||||||
genericSubmit=Bidali
|
genericSubmit=Bidali
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Oharra: prozesu honetarako minutu bat ere beharko da fitxategiaren tamaiaren arabera
|
processTimeWarning=Oharra: prozesu honetarako minutu bat ere beharko da fitxategiaren tamaiaren arabera
|
||||||
pageOrderPrompt=Orrialdeen ordena (sartu komaz bereizitako orrialde-zenbakien zerrenda)
|
pageOrderPrompt=Orrialdeen ordena (sartu komaz bereizitako orrialde-zenbakien zerrenda)
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=انتخاب فایلهای PDF (دو یا بیشتر)
|
|||||||
multiPdfDropPrompt=انتخاب (یا کشیدن و رها کردن) تمام فایلهای PDF مورد نیاز
|
multiPdfDropPrompt=انتخاب (یا کشیدن و رها کردن) تمام فایلهای PDF مورد نیاز
|
||||||
imgPrompt=انتخاب تصویر(ها)
|
imgPrompt=انتخاب تصویر(ها)
|
||||||
genericSubmit=ارسال
|
genericSubmit=ارسال
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=هشدار: این فرآیند ممکن است بسته به اندازه فایل تا یک دقیقه طول بکشد
|
processTimeWarning=هشدار: این فرآیند ممکن است بسته به اندازه فایل تا یک دقیقه طول بکشد
|
||||||
pageOrderPrompt=ترتیب صفحات سفارشی (یک لیست از شماره صفحات به صورت جدا شده با کاما وارد کنید یا از توابعی مانند 2n+1 استفاده کنید):
|
pageOrderPrompt=ترتیب صفحات سفارشی (یک لیست از شماره صفحات به صورت جدا شده با کاما وارد کنید یا از توابعی مانند 2n+1 استفاده کنید):
|
||||||
pageSelectionPrompt=انتخاب صفحات سفارشی (یک لیست از شماره صفحات به صورت جدا شده با کاما وارد کنید مانند 1,5,6 یا از توابعی مانند 2n+1 استفاده کنید):
|
pageSelectionPrompt=انتخاب صفحات سفارشی (یک لیست از شماره صفحات به صورت جدا شده با کاما وارد کنید مانند 1,5,6 یا از توابعی مانند 2n+1 استفاده کنید):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Sélectionnez les PDF
|
|||||||
multiPdfDropPrompt=Sélectionnez (ou glissez-déposez) tous les PDF dont vous avez besoin
|
multiPdfDropPrompt=Sélectionnez (ou glissez-déposez) tous les PDF dont vous avez besoin
|
||||||
imgPrompt=Choisir une image
|
imgPrompt=Choisir une image
|
||||||
genericSubmit=Envoyer
|
genericSubmit=Envoyer
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Attention, ce processus peut prendre jusqu'à une minute en fonction de la taille du fichier.
|
processTimeWarning=Attention, ce processus peut prendre jusqu'à une minute en fonction de la taille du fichier.
|
||||||
pageOrderPrompt=Ordre des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1) :
|
pageOrderPrompt=Ordre des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1) :
|
||||||
pageSelectionPrompt=Sélection des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1) :
|
pageSelectionPrompt=Sélection des pages (entrez une liste de numéros de page séparés par des virgules ou des fonctions telles que 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Roghnaigh PDFs (2+)
|
|||||||
multiPdfDropPrompt=Roghnaigh (nó tarraing & scaoil) gach PDF atá uait
|
multiPdfDropPrompt=Roghnaigh (nó tarraing & scaoil) gach PDF atá uait
|
||||||
imgPrompt=Roghnaigh Íomhá(í)
|
imgPrompt=Roghnaigh Íomhá(í)
|
||||||
genericSubmit=Cuir isteach
|
genericSubmit=Cuir isteach
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Rabhadh: Féadfaidh an próiseas seo suas le nóiméad a ghlacadh ag brath ar mhéid an chomhaid
|
processTimeWarning=Rabhadh: Féadfaidh an próiseas seo suas le nóiméad a ghlacadh ag brath ar mhéid an chomhaid
|
||||||
pageOrderPrompt=Ordú Leathanach Saincheaptha (Iontráil liosta uimhreacha leathanaigh nó Feidhmeanna ar nós 2n+1 le camóga deighilte):
|
pageOrderPrompt=Ordú Leathanach Saincheaptha (Iontráil liosta uimhreacha leathanaigh nó Feidhmeanna ar nós 2n+1 le camóga deighilte):
|
||||||
pageSelectionPrompt=Roghnú Leathanach Saincheaptha (Iontráil liosta leathanach scartha le camóg d'uimhreacha 1,5,6 nó Feidhmeanna ar nós 2n+1):
|
pageSelectionPrompt=Roghnú Leathanach Saincheaptha (Iontráil liosta leathanach scartha le camóg d'uimhreacha 1,5,6 nó Feidhmeanna ar nós 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=पीडीएफ फ़ाइलें चुनें (2+)
|
|||||||
multiPdfDropPrompt=आवश्यक सभी पीडीएफ फ़ाइलों को चुनें (या खींच कर छोड़ें)
|
multiPdfDropPrompt=आवश्यक सभी पीडीएफ फ़ाइलों को चुनें (या खींच कर छोड़ें)
|
||||||
imgPrompt=छवि(यां) चुनें
|
imgPrompt=छवि(यां) चुनें
|
||||||
genericSubmit=जमा करें
|
genericSubmit=जमा करें
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=चेतावनी: फ़ाइल के आकार के आधार पर यह प्रक्रिया एक मिनट तक ले सकती है
|
processTimeWarning=चेतावनी: फ़ाइल के आकार के आधार पर यह प्रक्रिया एक मिनट तक ले सकती है
|
||||||
pageOrderPrompt=कस्टम पृष्ठ क्रम (पृष्ठ संख्याओं की अल्पविराम से अलग सूची या 2n+1 जैसे फ़ंक्शन दर्ज करें):
|
pageOrderPrompt=कस्टम पृष्ठ क्रम (पृष्ठ संख्याओं की अल्पविराम से अलग सूची या 2n+1 जैसे फ़ंक्शन दर्ज करें):
|
||||||
pageSelectionPrompt=कस्टम पृष्ठ चयन (पृष्ठ संख्याओं 1,5,6 या 2n+1 जैसे फ़ंक्शन की अल्पविराम से अलग सूची दर्ज करें):
|
pageSelectionPrompt=कस्टम पृष्ठ चयन (पृष्ठ संख्याओं 1,5,6 या 2n+1 जैसे फ़ंक्शन की अल्पविराम से अलग सूची दर्ज करें):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Odaberi PDF-ove (2+)
|
|||||||
multiPdfDropPrompt=Odaberi (ili povuci i ispusti) sve potrebne PDF-ove
|
multiPdfDropPrompt=Odaberi (ili povuci i ispusti) sve potrebne PDF-ove
|
||||||
imgPrompt=Odaberi sliku (slike)
|
imgPrompt=Odaberi sliku (slike)
|
||||||
genericSubmit=Pošalji
|
genericSubmit=Pošalji
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Upozorenje: Ovaj proces može trajati i do minutu, u zavisnosti od veličine dokumenta
|
processTimeWarning=Upozorenje: Ovaj proces može trajati i do minutu, u zavisnosti od veličine dokumenta
|
||||||
pageOrderPrompt=Prilagođeni redoslijed stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
pageOrderPrompt=Prilagođeni redoslijed stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
||||||
pageSelectionPrompt=Prilagođeni odabir stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
pageSelectionPrompt=Prilagođeni odabir stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDF-fájlok kiválasztása (2+)
|
|||||||
multiPdfDropPrompt=Válassza ki (vagy húzza ide) az összes szükséges PDF-fájlt
|
multiPdfDropPrompt=Válassza ki (vagy húzza ide) az összes szükséges PDF-fájlt
|
||||||
imgPrompt=Kép kiválasztása
|
imgPrompt=Kép kiválasztása
|
||||||
genericSubmit=Küldés
|
genericSubmit=Küldés
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Figyelmeztetés: A folyamat akár egy percig is eltarthat a fájlmérettől függően
|
processTimeWarning=Figyelmeztetés: A folyamat akár egy percig is eltarthat a fájlmérettől függően
|
||||||
pageOrderPrompt=Egyedi oldalsorrend (Adja meg az oldalszámokat vesszővel elválasztva vagy használjon függvényeket, pl. 2n+1):
|
pageOrderPrompt=Egyedi oldalsorrend (Adja meg az oldalszámokat vesszővel elválasztva vagy használjon függvényeket, pl. 2n+1):
|
||||||
pageSelectionPrompt=Egyedi oldalválasztás (Adja meg az oldalszámokat vesszővel elválasztva, pl. 1,5,6 vagy használjon függvényeket, pl. 2n+1):
|
pageSelectionPrompt=Egyedi oldalválasztás (Adja meg az oldalszámokat vesszővel elválasztva, pl. 1,5,6 vagy használjon függvényeket, pl. 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Pilih PDF (2+)
|
|||||||
multiPdfDropPrompt=Pilih (atau seret & letakkan)) semua PDF yang Anda butuhkan
|
multiPdfDropPrompt=Pilih (atau seret & letakkan)) semua PDF yang Anda butuhkan
|
||||||
imgPrompt=Pilih Gambar
|
imgPrompt=Pilih Gambar
|
||||||
genericSubmit=Kirim
|
genericSubmit=Kirim
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Peringatan: Proses ini dapat memakan waktu hingga satu menit, tergantung pada ukuran berkas
|
processTimeWarning=Peringatan: Proses ini dapat memakan waktu hingga satu menit, tergantung pada ukuran berkas
|
||||||
pageOrderPrompt=Urutan Halaman Khusus (Masukkan daftar nomor halaman yang dipisahkan dengan koma atau Fungsi seperti 2n + 1) :
|
pageOrderPrompt=Urutan Halaman Khusus (Masukkan daftar nomor halaman yang dipisahkan dengan koma atau Fungsi seperti 2n + 1) :
|
||||||
pageSelectionPrompt=Pemilihan Halaman Kustom (Masukkan daftar nomor halaman dipisahkan dengan koma 1,5,6 atau Fungsi seperti 2n+1) :
|
pageSelectionPrompt=Pemilihan Halaman Kustom (Masukkan daftar nomor halaman dipisahkan dengan koma 1,5,6 atau Fungsi seperti 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Scegli 2 o più PDF
|
|||||||
multiPdfDropPrompt=Scegli (o trascina e rilascia) uno o più PDF
|
multiPdfDropPrompt=Scegli (o trascina e rilascia) uno o più PDF
|
||||||
imgPrompt=Scegli immagine/i
|
imgPrompt=Scegli immagine/i
|
||||||
genericSubmit=Invia
|
genericSubmit=Invia
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file
|
processTimeWarning=Nota: Questo processo potrebbe richiedere fino a un minuto in base alla dimensione dei file
|
||||||
pageOrderPrompt=Ordine delle pagine (inserisci una lista di numeri separati da virgola):
|
pageOrderPrompt=Ordine delle pagine (inserisci una lista di numeri separati da virgola):
|
||||||
pageSelectionPrompt=Selezione pagina personalizzata (inserisci un elenco separato da virgole di numeri di pagina 1,5,6 o funzioni come 2n+1) :
|
pageSelectionPrompt=Selezione pagina personalizzata (inserisci un elenco separato da virgole di numeri di pagina 1,5,6 o funzioni come 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDFを選択 (2つ以上)
|
|||||||
multiPdfDropPrompt=PDFを選択 (又はドラッグ&ドロップ)
|
multiPdfDropPrompt=PDFを選択 (又はドラッグ&ドロップ)
|
||||||
imgPrompt=画像を選択
|
imgPrompt=画像を選択
|
||||||
genericSubmit=送信
|
genericSubmit=送信
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=警告:この処理はファイルサイズによって1分程度かかることがあります
|
processTimeWarning=警告:この処理はファイルサイズによって1分程度かかることがあります
|
||||||
pageOrderPrompt=ページ順序 (ページ番号をカンマ区切り又は2n+1のような関数で入力):
|
pageOrderPrompt=ページ順序 (ページ番号をカンマ区切り又は2n+1のような関数で入力):
|
||||||
pageSelectionPrompt=カスタムページ選択(ページ番号1、5、6または2n + 1などの関数のコンマ区切りリストを入力します):
|
pageSelectionPrompt=カスタムページ選択(ページ番号1、5、6または2n + 1などの関数のコンマ区切りリストを入力します):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDF 선택 (2개 이상)
|
|||||||
multiPdfDropPrompt=필요한 모든 PDF를 선택(또는 끌어다 놓기)하세요
|
multiPdfDropPrompt=필요한 모든 PDF를 선택(또는 끌어다 놓기)하세요
|
||||||
imgPrompt=이미지 선택
|
imgPrompt=이미지 선택
|
||||||
genericSubmit=제출
|
genericSubmit=제출
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=경고: 이 과정은 파일 크기에 따라 최대 1분이 소요될 수 있습니다
|
processTimeWarning=경고: 이 과정은 파일 크기에 따라 최대 1분이 소요될 수 있습니다
|
||||||
pageOrderPrompt=사용자 지정 페이지 순서 (쉼표로 구분된 페이지 번호 목록 또는 2n+1과 같은 함수 입력):
|
pageOrderPrompt=사용자 지정 페이지 순서 (쉼표로 구분된 페이지 번호 목록 또는 2n+1과 같은 함수 입력):
|
||||||
pageSelectionPrompt=사용자 지정 페이지 선택 (페이지 번호 1,5,6 또는 2n+1과 같은 함수를 쉼표로 구분하여 목록 입력):
|
pageSelectionPrompt=사용자 지정 페이지 선택 (페이지 번호 1,5,6 또는 2n+1과 같은 함수를 쉼표로 구분하여 목록 입력):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Selecteer PDF's (2+)
|
|||||||
multiPdfDropPrompt=Selecteer (of sleep & zet neer) alle PDF's die je nodig hebt
|
multiPdfDropPrompt=Selecteer (of sleep & zet neer) alle PDF's die je nodig hebt
|
||||||
imgPrompt=Selecteer afbeelding(en)
|
imgPrompt=Selecteer afbeelding(en)
|
||||||
genericSubmit=Indienen
|
genericSubmit=Indienen
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte
|
processTimeWarning=Waarschuwing: Dit proces kan tot een minuut duren afhankelijk van de bestandsgrootte
|
||||||
pageOrderPrompt=Aangepaste pagina volgorde (Voer een komma-gescheiden lijst van paginanummers of functies in, zoals 2n+1) :
|
pageOrderPrompt=Aangepaste pagina volgorde (Voer een komma-gescheiden lijst van paginanummers of functies in, zoals 2n+1) :
|
||||||
pageSelectionPrompt=Aangepaste pagina selectie (Voer een komma-gescheiden lijst van paginanummer 1,5,6 of functies zoals 2n+1 in) :
|
pageSelectionPrompt=Aangepaste pagina selectie (Voer een komma-gescheiden lijst van paginanummer 1,5,6 of functies zoals 2n+1 in) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Velg PDF-filer (2+)
|
|||||||
multiPdfDropPrompt=Velg (eller dra og slipp) alle PDF-ene du trenger
|
multiPdfDropPrompt=Velg (eller dra og slipp) alle PDF-ene du trenger
|
||||||
imgPrompt=Velg Bilde(r)
|
imgPrompt=Velg Bilde(r)
|
||||||
genericSubmit=Send inn
|
genericSubmit=Send inn
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Denne prosessen kan ta opptil ett minutt avhengig av filstørrelse
|
processTimeWarning=Denne prosessen kan ta opptil ett minutt avhengig av filstørrelse
|
||||||
pageOrderPrompt=Tilpasset side rekkefølge (Skriv inn en kommaseparert liste over sidetall eller funksjoner som 2n+1):
|
pageOrderPrompt=Tilpasset side rekkefølge (Skriv inn en kommaseparert liste over sidetall eller funksjoner som 2n+1):
|
||||||
pageSelectionPrompt=Tilpasset Sidevalg (Skriv inn en kommaseparert liste over sidetall 1,5,6 eller Funksjoner som 2n+1):
|
pageSelectionPrompt=Tilpasset Sidevalg (Skriv inn en kommaseparert liste over sidetall 1,5,6 eller Funksjoner som 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Wybierz PDF (2+)
|
|||||||
multiPdfDropPrompt=Wybierz (lub przeciągnij i puść) wszystkie dokumenty PDF
|
multiPdfDropPrompt=Wybierz (lub przeciągnij i puść) wszystkie dokumenty PDF
|
||||||
imgPrompt=Wybierz obraz(y)
|
imgPrompt=Wybierz obraz(y)
|
||||||
genericSubmit=Wyślij
|
genericSubmit=Wyślij
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku
|
processTimeWarning=Ostrzeżenie: Ten proces może potrwać do minuty, w zależności od rozmiaru pliku
|
||||||
pageOrderPrompt=Kolejność stron (wprowadź listę numerów stron oddzielonych przecinkami) :
|
pageOrderPrompt=Kolejność stron (wprowadź listę numerów stron oddzielonych przecinkami) :
|
||||||
pageSelectionPrompt=Niestandardowy wybór strony (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Niestandardowy wybór strony (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Selecione os PDFs (2+)
|
|||||||
multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs desejados:
|
multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs desejados:
|
||||||
imgPrompt=Selecione a(s) Imagem(ns)
|
imgPrompt=Selecione a(s) Imagem(ns)
|
||||||
genericSubmit=Enviar
|
genericSubmit=Enviar
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Aviso: Este processo pode levar até um minuto, dependendo do tamanho do arquivo
|
processTimeWarning=Aviso: Este processo pode levar até um minuto, dependendo do tamanho do arquivo
|
||||||
pageOrderPrompt=Ordem de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula ou funções como 2n+1):
|
pageOrderPrompt=Ordem de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula ou funções como 2n+1):
|
||||||
pageSelectionPrompt=Seleção de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula como 1,5,6 ou funções como 2n+1):
|
pageSelectionPrompt=Seleção de Página Personalizada (Digite uma lista de números de páginas, separadas por vírgula como 1,5,6 ou funções como 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Selecione PDFs (2+)
|
|||||||
multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs necessários
|
multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs necessários
|
||||||
imgPrompt=Selecione Imagem(ns)
|
imgPrompt=Selecione Imagem(ns)
|
||||||
genericSubmit=Submeter
|
genericSubmit=Submeter
|
||||||
|
uploadLimit=Tamanho máximo de ficheiro:
|
||||||
|
uploadLimitExceededSingular=é muito grande. O tamanho máximo permitido é
|
||||||
|
uploadLimitExceededPlural=são muito grandes. O tamanho máximo permitido é
|
||||||
processTimeWarning=Aviso: Este processo pode demorar até um minuto dependendo do tamanho do ficheiro
|
processTimeWarning=Aviso: Este processo pode demorar até um minuto dependendo do tamanho do ficheiro
|
||||||
pageOrderPrompt=Ordem Personalizada de Páginas (Insira uma lista de números de página separados por vírgulas ou Funções como 2n+1):
|
pageOrderPrompt=Ordem Personalizada de Páginas (Insira uma lista de números de página separados por vírgulas ou Funções como 2n+1):
|
||||||
pageSelectionPrompt=Seleção Personalizada de Páginas (Insira uma lista de números de página separados por vírgulas 1,5,6 ou Funções como 2n+1):
|
pageSelectionPrompt=Seleção Personalizada de Páginas (Insira uma lista de números de página separados por vírgulas 1,5,6 ou Funções como 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Selectează mai multe fișiere PDF (2+)
|
|||||||
multiPdfDropPrompt=Selectează (sau trage și plasează) toate fișierele PDF de care ai nevoie
|
multiPdfDropPrompt=Selectează (sau trage și plasează) toate fișierele PDF de care ai nevoie
|
||||||
imgPrompt=Selectează imagini
|
imgPrompt=Selectează imagini
|
||||||
genericSubmit=Trimite
|
genericSubmit=Trimite
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului
|
processTimeWarning=Avertisment: Acest proces poate dura până la un minut în funcție de dimensiunea fișierului
|
||||||
pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină):
|
pageOrderPrompt=Ordinea paginilor (Introdu o listă separată prin virgulă de numere de pagină):
|
||||||
pageSelectionPrompt=Selecție Personalizată de Pagini (Introduceți o listă separată prin virgule a numerelor de pagini 1,5,6 sau funcții precum 2n+1) :
|
pageSelectionPrompt=Selecție Personalizată de Pagini (Introduceți o listă separată prin virgule a numerelor de pagini 1,5,6 sau funcții precum 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Выберите PDF-файлы (2+)
|
|||||||
multiPdfDropPrompt=Выберите (или перетащите) все необходимые PDF-файлы
|
multiPdfDropPrompt=Выберите (или перетащите) все необходимые PDF-файлы
|
||||||
imgPrompt=Выберите изображение(я)
|
imgPrompt=Выберите изображение(я)
|
||||||
genericSubmit=Отправить
|
genericSubmit=Отправить
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Внимание: Данный процесс может занять до минуты в зависимости от размера файла
|
processTimeWarning=Внимание: Данный процесс может занять до минуты в зависимости от размера файла
|
||||||
pageOrderPrompt=Пользовательский порядок страниц (Введите список номеров страниц через запятую или функции типа 2n+1):
|
pageOrderPrompt=Пользовательский порядок страниц (Введите список номеров страниц через запятую или функции типа 2n+1):
|
||||||
pageSelectionPrompt=Выбор страниц (Введите список номеров страниц через запятую 1,5,6 или функции типа 2n+1):
|
pageSelectionPrompt=Выбор страниц (Введите список номеров страниц через запятую 1,5,6 или функции типа 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Vyberte PDF súbory (2+)
|
|||||||
multiPdfDropPrompt=Vyberte (alebo pretiahnite) všetky požadované PDF súbory
|
multiPdfDropPrompt=Vyberte (alebo pretiahnite) všetky požadované PDF súbory
|
||||||
imgPrompt=Vyberte obrázok(y)
|
imgPrompt=Vyberte obrázok(y)
|
||||||
genericSubmit=Odoslať
|
genericSubmit=Odoslať
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Varovanie: Tento proces môže trvať až minútu v závislosti od veľkosti súboru
|
processTimeWarning=Varovanie: Tento proces môže trvať až minútu v závislosti od veľkosti súboru
|
||||||
pageOrderPrompt=Vlastné poradie stránok (Zadajte zoznam čísel stránok oddelených čiarkou alebo funkcie ako 2n+1):
|
pageOrderPrompt=Vlastné poradie stránok (Zadajte zoznam čísel stránok oddelených čiarkou alebo funkcie ako 2n+1):
|
||||||
pageSelectionPrompt=Vlastný výber stránok (Zadajte zoznam čísel stránok oddelených čiarkou 1,5,6 alebo funkcie ako 2n+1):
|
pageSelectionPrompt=Vlastný výber stránok (Zadajte zoznam čísel stránok oddelených čiarkou 1,5,6 alebo funkcie ako 2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Izberi PDF (2+)
|
|||||||
multiPdfDropPrompt=Izberite (ali povlecite in spustite) vse datoteke PDF, ki jih potrebujete
|
multiPdfDropPrompt=Izberite (ali povlecite in spustite) vse datoteke PDF, ki jih potrebujete
|
||||||
imgPrompt=Izberite sliko(e)
|
imgPrompt=Izberite sliko(e)
|
||||||
genericSubmit=Pošlji
|
genericSubmit=Pošlji
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Opozorilo: ta postopek lahko traja do minute, odvisno od velikosti datoteke
|
processTimeWarning=Opozorilo: ta postopek lahko traja do minute, odvisno od velikosti datoteke
|
||||||
pageOrderPrompt=Vrstni red strani po meri (Vnesite z vejicami ločen seznam številk strani ali funkcij, kot je 2n+1) :
|
pageOrderPrompt=Vrstni red strani po meri (Vnesite z vejicami ločen seznam številk strani ali funkcij, kot je 2n+1) :
|
||||||
pageSelectionPrompt=Izbira strani po meri (Vnesite z vejicami ločen seznam številk strani 1,5,6 ali funkcije, kot je 2n+1) :
|
pageSelectionPrompt=Izbira strani po meri (Vnesite z vejicami ločen seznam številk strani 1,5,6 ali funkcije, kot je 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Odaberi PDF-ove (2+)
|
|||||||
multiPdfDropPrompt=Odaberi (prevuci i pusti ) sve PDF-ove koji su vam potrebni
|
multiPdfDropPrompt=Odaberi (prevuci i pusti ) sve PDF-ove koji su vam potrebni
|
||||||
imgPrompt=Odaberi sliku (slike)
|
imgPrompt=Odaberi sliku (slike)
|
||||||
genericSubmit=Prihvatiti
|
genericSubmit=Prihvatiti
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Warning:Upozorenje: Ovaj proces može trajati i do minut, u zavisnosti od veličine dokumenta
|
processTimeWarning=Warning:Upozorenje: Ovaj proces može trajati i do minut, u zavisnosti od veličine dokumenta
|
||||||
pageOrderPrompt=Prilagođeni redosled stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
pageOrderPrompt=Prilagođeni redosled stranica (unesi listu brojeva stranica ili funkcija, kao što su 2n+1, razdvojene zarezima) :
|
||||||
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
pageSelectionPrompt=Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Välj PDF-filer (2+)
|
|||||||
multiPdfDropPrompt=Välj (eller dra och släpp) alla PDF-filer du behöver
|
multiPdfDropPrompt=Välj (eller dra och släpp) alla PDF-filer du behöver
|
||||||
imgPrompt=Välj bild(er)
|
imgPrompt=Välj bild(er)
|
||||||
genericSubmit=Skicka
|
genericSubmit=Skicka
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek
|
processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek
|
||||||
pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) :
|
pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) :
|
||||||
pageSelectionPrompt=Anpassat sidval (Ange en kommaseparerad lista med sidnummer 1,5,6 eller funktioner som 2n+1) :
|
pageSelectionPrompt=Anpassat sidval (Ange en kommaseparerad lista med sidnummer 1,5,6 eller funktioner som 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=เลือก PDF หลายไฟล์ (2 ขึ้นไ
|
|||||||
multiPdfDropPrompt=เลือก (หรือลากและวาง) PDF ทั้งหมดที่คุณต้องการ
|
multiPdfDropPrompt=เลือก (หรือลากและวาง) PDF ทั้งหมดที่คุณต้องการ
|
||||||
imgPrompt=เลือกภาพ
|
imgPrompt=เลือกภาพ
|
||||||
genericSubmit=ส่ง
|
genericSubmit=ส่ง
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=คำเตือน: กระบวนการนี้อาจใช้เวลาสูงสุดหนึ่งนาทีขึ้นอยู่กับขนาดไฟล์
|
processTimeWarning=คำเตือน: กระบวนการนี้อาจใช้เวลาสูงสุดหนึ่งนาทีขึ้นอยู่กับขนาดไฟล์
|
||||||
pageOrderPrompt=เรียงลำดับหน้าตามความต้องการ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาคหรือฟังก์ชัน เช่น 2n+1) :
|
pageOrderPrompt=เรียงลำดับหน้าตามความต้องการ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาคหรือฟังก์ชัน เช่น 2n+1) :
|
||||||
pageSelectionPrompt=เลือกหน้าตามความต้องการ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาค เช่น 1,5,6 หรือฟังก์ชัน เช่น 2n+1) :
|
pageSelectionPrompt=เลือกหน้าตามความต้องการ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาค เช่น 1,5,6 หรือฟังก์ชัน เช่น 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDFleri seçin (2+)
|
|||||||
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
multiPdfDropPrompt=Tüm gerekli PDF'leri seçin (ya da sürükleyip bırakın)
|
||||||
imgPrompt=Resim(leri) seçin
|
imgPrompt=Resim(leri) seçin
|
||||||
genericSubmit=Gönder
|
genericSubmit=Gönder
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
processTimeWarning=Uyarı: Bu işlem, dosya boyutuna bağlı olarak bir dakikaya kadar sürebilir.
|
||||||
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
pageOrderPrompt=Özel Sayfa Sırası (Virgülle ayrılmış sayfa numaraları veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
|
pageSelectionPrompt=Özel Sayfa Seçimi (1,5,6 sayfa numaralarının virgülle ayrılmış bir listesini veya 2n+1 gibi bir fonksiyon girin) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Оберіть PDFи (2+)
|
|||||||
multiPdfDropPrompt=Оберіть (або перетягніть) всі необхідні PDFи
|
multiPdfDropPrompt=Оберіть (або перетягніть) всі необхідні PDFи
|
||||||
imgPrompt=Оберіть зображення(я)
|
imgPrompt=Оберіть зображення(я)
|
||||||
genericSubmit=Надіслати
|
genericSubmit=Надіслати
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Увага: Цей процес може тривати до хвилини в залежності від розміру файлу.
|
processTimeWarning=Увага: Цей процес може тривати до хвилини в залежності від розміру файлу.
|
||||||
pageOrderPrompt=Порядок сторінок (введіть список номерів сторінок через кому):
|
pageOrderPrompt=Порядок сторінок (введіть список номерів сторінок через кому):
|
||||||
pageSelectionPrompt=Користувацький вибір сторінки (введіть список номерів сторінок через кому 1,5,6 або функції типу 2n+1) :
|
pageSelectionPrompt=Користувацький вибір сторінки (введіть список номерів сторінок через кому 1,5,6 або функції типу 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=Chọn các tệp PDF (2+)
|
|||||||
multiPdfDropPrompt=Chọn (hoặc kéo và thả) tất cả các tệp PDF bạn cần
|
multiPdfDropPrompt=Chọn (hoặc kéo và thả) tất cả các tệp PDF bạn cần
|
||||||
imgPrompt=Chọn (các) hình ảnh
|
imgPrompt=Chọn (các) hình ảnh
|
||||||
genericSubmit=Gửi
|
genericSubmit=Gửi
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=Cảnh báo: Quá trình này có thể mất đến một phút tùy thuộc vào kích thước tệp
|
processTimeWarning=Cảnh báo: Quá trình này có thể mất đến một phút tùy thuộc vào kích thước tệp
|
||||||
pageOrderPrompt=Thứ tự trang tùy chỉnh (Nhập danh sách số trang được phân tách bằng dấu phẩy hoặc Các hàm như 2n+1) :
|
pageOrderPrompt=Thứ tự trang tùy chỉnh (Nhập danh sách số trang được phân tách bằng dấu phẩy hoặc Các hàm như 2n+1) :
|
||||||
pageSelectionPrompt=Lựa chọn trang tùy chỉnh (Nhập danh sách số trang được phân tách bằng dấu phẩy 1,5,6 hoặc Các hàm như 2n+1) :
|
pageSelectionPrompt=Lựa chọn trang tùy chỉnh (Nhập danh sách số trang được phân tách bằng dấu phẩy 1,5,6 hoặc Các hàm như 2n+1) :
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=PDF གཉིས་ཡན་འདེམས་རོགས།
|
|||||||
multiPdfDropPrompt=དགོས་མཁོ་འདི་ PDF ཡིག་ཆ་ཚང་མ་འདེམས་པའམ་འཐེན་རོགས།
|
multiPdfDropPrompt=དགོས་མཁོ་འདི་ PDF ཡིག་ཆ་ཚང་མ་འདེམས་པའམ་འཐེན་རོགས།
|
||||||
imgPrompt=པར་རིས་འདེམས་རོགས།
|
imgPrompt=པར་རིས་འདེམས་རོགས།
|
||||||
genericSubmit=ཕུལ་བཅོས།
|
genericSubmit=ཕུལ་བཅོས།
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=ཉེན་བཅོས། བྱ་རིམ་འདི་ཡིག་ཆའི་ཆེ་ཆུང་ལ་གཞིགས་ནས་སྐར་མ་གཅིག་བར་འགོར་སྲིད།
|
processTimeWarning=ཉེན་བཅོས། བྱ་རིམ་འདི་ཡིག་ཆའི་ཆེ་ཆུང་ལ་གཞིགས་ནས་སྐར་མ་གཅིག་བར་འགོར་སྲིད།
|
||||||
pageOrderPrompt=ཤོག་ངོས་གོ་རིམ་རང་སྒྲིག(ཤོག་གྲངས་ཀྱི་ཐོ་གཞུང་ངམ་རྩིས་རྒྱག་བྱེད་ཐབས་ 2n+1 ལྟ་བུ་འཇུག་རོགས།)
|
pageOrderPrompt=ཤོག་ངོས་གོ་རིམ་རང་སྒྲིག(ཤོག་གྲངས་ཀྱི་ཐོ་གཞུང་ངམ་རྩིས་རྒྱག་བྱེད་ཐབས་ 2n+1 ལྟ་བུ་འཇུག་རོགས།)
|
||||||
pageSelectionPrompt=ཤོག་ངོས་འདེམས་སྒྲུག(ཤོག་གྲངས་ཀྱི་ཐོ་གཞུང་ 1,5,6 འམ་རྩིས་རྒྱག་བྱེད་ཐབས་ 2n+1 ལྟ་བུ་འཇུག་རོགས།)
|
pageSelectionPrompt=ཤོག་ངོས་འདེམས་སྒྲུག(ཤོག་གྲངས་ཀྱི་ཐོ་གཞུང་ 1,5,6 འམ་རྩིས་རྒྱག་བྱེད་ཐབས་ 2n+1 ལྟ་བུ་འཇུག་རོགས།)
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=选择多个 PDF(2个或更多)
|
|||||||
multiPdfDropPrompt=选择(或拖拽)所需的 PDF
|
multiPdfDropPrompt=选择(或拖拽)所需的 PDF
|
||||||
imgPrompt=选择图像
|
imgPrompt=选择图像
|
||||||
genericSubmit=提交
|
genericSubmit=提交
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
|
processTimeWarning=警告:此过程可能需要多达一分钟,具体时间取决于文件大小
|
||||||
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表或函数):
|
pageOrderPrompt=页面顺序(输入逗号分隔的页码列表或函数):
|
||||||
pageSelectionPrompt=自定义页面选择(输入以逗号分隔的页码列表或函数:1,5,6、2n+1):
|
pageSelectionPrompt=自定义页面选择(输入以逗号分隔的页码列表或函数:1,5,6、2n+1):
|
||||||
|
@ -10,6 +10,9 @@ multiPdfPrompt=選擇多個 PDF 檔案
|
|||||||
multiPdfDropPrompt=選擇(或拖放)所有需要的 PDF 檔案
|
multiPdfDropPrompt=選擇(或拖放)所有需要的 PDF 檔案
|
||||||
imgPrompt=選擇圖片
|
imgPrompt=選擇圖片
|
||||||
genericSubmit=送出
|
genericSubmit=送出
|
||||||
|
uploadLimit=Maximum file size:
|
||||||
|
uploadLimitExceededSingular=is too large. Maximum allowed size is
|
||||||
|
uploadLimitExceededPlural=are too large. Maximum allowed size is
|
||||||
processTimeWarning=警告:此過程可能長達一分鐘,具體取決於檔案大小
|
processTimeWarning=警告:此過程可能長達一分鐘,具體取決於檔案大小
|
||||||
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
pageOrderPrompt=自訂頁面順序(輸入以逗號分隔的頁碼或函式,如 2n+1):
|
||||||
pageSelectionPrompt=自訂頁面選擇(輸入以逗號分隔的頁碼 1、5、6 或 2n+1 等函式的清單):
|
pageSelectionPrompt=自訂頁面選擇(輸入以逗號分隔的頁碼 1、5、6 或 2n+1 等函式的清單):
|
||||||
|
@ -110,6 +110,7 @@ system:
|
|||||||
operations:
|
operations:
|
||||||
weasyprint: '' #Defaults to /opt/venv/bin/weasyprint
|
weasyprint: '' #Defaults to /opt/venv/bin/weasyprint
|
||||||
unoconvert: '' #Defaults to /opt/venv/bin/unoconvert
|
unoconvert: '' #Defaults to /opt/venv/bin/unoconvert
|
||||||
|
fileUploadLimit: '' # Defaults to "". No limit when string is empty. Set a number, between 0 and 999, followed by one of the following strings to set a limit. "KB", "MB", "GB".
|
||||||
|
|
||||||
ui:
|
ui:
|
||||||
appName: '' # application's visible name
|
appName: '' # application's visible name
|
||||||
|
@ -43,6 +43,20 @@
|
|||||||
firstErrorOccurred = false;
|
firstErrorOccurred = false;
|
||||||
const url = this.action;
|
const url = this.action;
|
||||||
let files = $('#fileInput-input')[0].files;
|
let files = $('#fileInput-input')[0].files;
|
||||||
|
const uploadLimit = window.stirlingPDF?.uploadLimit ?? 0;
|
||||||
|
if (uploadLimit > 0) {
|
||||||
|
const oversizedFiles = Array.from(files).filter(f => f.size > uploadLimit);
|
||||||
|
if (oversizedFiles.length > 0) {
|
||||||
|
const names = oversizedFiles.map(f => `"${f.name}"`).join(', ');
|
||||||
|
if (names.length === 1) {
|
||||||
|
alert(`${names} ${window.stirlingPDF.uploadLimitExceededSingular} ${window.stirlingPDF.uploadLimitReadable}.`);
|
||||||
|
} else {
|
||||||
|
alert(`${names} ${window.stirlingPDF.uploadLimitExceededPlural} ${window.stirlingPDF.uploadLimitReadable}.`);
|
||||||
|
}
|
||||||
|
files = Array.from(files).filter(f => f.size <= uploadLimit);
|
||||||
|
if (files.length === 0) return;
|
||||||
|
}
|
||||||
|
}
|
||||||
const formData = new FormData(this);
|
const formData = new FormData(this);
|
||||||
const submitButton = document.getElementById('submitBtn');
|
const submitButton = document.getElementById('submitBtn');
|
||||||
const showGameBtn = document.getElementById('show-game-btn');
|
const showGameBtn = document.getElementById('show-game-btn');
|
||||||
|
@ -196,6 +196,28 @@ function setupFileInput(chooser) {
|
|||||||
|
|
||||||
await checkZipFile();
|
await checkZipFile();
|
||||||
|
|
||||||
|
const uploadLimit = window.stirlingPDF?.uploadLimit ?? 0;
|
||||||
|
if (uploadLimit > 0) {
|
||||||
|
const oversizedFiles = allFiles.filter(f => f.size > uploadLimit);
|
||||||
|
if (oversizedFiles.length > 0) {
|
||||||
|
const names = oversizedFiles.map(f => `"${f.name}"`).join(', ');
|
||||||
|
if (names.length === 1) {
|
||||||
|
alert(`${names} ${window.stirlingPDF.uploadLimitExceededSingular} ${window.stirlingPDF.uploadLimitReadable}.`);
|
||||||
|
} else {
|
||||||
|
alert(`${names} ${window.stirlingPDF.uploadLimitExceededPlural} ${window.stirlingPDF.uploadLimitReadable}.`);
|
||||||
|
}
|
||||||
|
allFiles = allFiles.filter(f => f.size <= uploadLimit);
|
||||||
|
const dataTransfer = new DataTransfer();
|
||||||
|
allFiles.forEach(f => dataTransfer.items.add(f));
|
||||||
|
input.files = dataTransfer.files;
|
||||||
|
|
||||||
|
if (allFiles.length === 0) {
|
||||||
|
inputContainer.querySelector('#fileInputText').innerHTML = originalText;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
allFiles = await Promise.all(
|
allFiles = await Promise.all(
|
||||||
allFiles.map(async (file) => {
|
allFiles.map(async (file) => {
|
||||||
let decryptedFile = file;
|
let decryptedFile = file;
|
||||||
|
@ -84,13 +84,11 @@
|
|||||||
|
|
||||||
function UpdatePosthogConsent(){
|
function UpdatePosthogConsent(){
|
||||||
if(typeof(posthog) == "undefined") {
|
if(typeof(posthog) == "undefined") {
|
||||||
console.log("Posthog not initialised");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.CookieConsent.acceptedCategory('analytics')?
|
window.CookieConsent.acceptedCategory('analytics')?
|
||||||
posthog.opt_in_capturing() : posthog.opt_out_capturing();
|
posthog.opt_in_capturing() : posthog.opt_out_capturing();
|
||||||
console.log("Posthog: Opted " + (posthog.has_opted_out_capturing()? "out" : "in"));
|
|
||||||
}
|
}
|
||||||
const stirlingPDFLabel = /*[[${@StirlingPDFLabel}]]*/ '';
|
const stirlingPDFLabel = /*[[${@StirlingPDFLabel}]]*/ '';
|
||||||
const analyticsEnabled = /*[[${@analyticsEnabled}]]*/ false;
|
const analyticsEnabled = /*[[${@analyticsEnabled}]]*/ false;
|
||||||
@ -150,8 +148,9 @@
|
|||||||
const baseUrl = window.location.hostname;
|
const baseUrl = window.location.hostname;
|
||||||
posthog.register_once({
|
posthog.register_once({
|
||||||
'hostname': baseUrl,
|
'hostname': baseUrl,
|
||||||
'UUID': /*[[${@UUID}]]*/ ''
|
'UUID': /*[[${@UUID}]]*/ '',
|
||||||
})
|
'app_version': /*[[${@appVersion}]]*/ '',
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("cc:onConsent", UpdatePosthogConsent);
|
window.addEventListener("cc:onConsent", UpdatePosthogConsent);
|
||||||
@ -241,6 +240,10 @@
|
|||||||
window.stirlingPDF.sessionExpired = /*[[#{session.expired}]]*/ '';
|
window.stirlingPDF.sessionExpired = /*[[#{session.expired}]]*/ '';
|
||||||
window.stirlingPDF.refreshPage = /*[[#{session.refreshPage}]]*/ 'Refresh Page';
|
window.stirlingPDF.refreshPage = /*[[#{session.refreshPage}]]*/ 'Refresh Page';
|
||||||
window.stirlingPDF.error = /*[[#{error}]]*/ "Error";
|
window.stirlingPDF.error = /*[[#{error}]]*/ "Error";
|
||||||
|
window.stirlingPDF.uploadLimit = /*[[${uploadLimit}]]*/ 0;
|
||||||
|
window.stirlingPDF.uploadLimitReadable = /*[[${uploadLimitReadable}]]*/ 'Unlimited';
|
||||||
|
window.stirlingPDF.uploadLimitExceededSingular = /*[[#{uploadLimitExceededSingular}]]*/ 'is too large. Maximum allowed size is';
|
||||||
|
window.stirlingPDF.uploadLimitExceededPlural = /*[[#{uploadLimitExceededPlural}]]*/ 'are too large. Maximum allowed size is';
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script>
|
<script type="module" th:src="@{'/pdfjs-legacy/pdf.mjs'}"></script>
|
||||||
@ -289,8 +292,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="selected-files flex-wrap"></div>
|
<div class="selected-files flex-wrap"></div>
|
||||||
|
<div class="text-muted small mt-0 text-end w-100" th:if="${uploadLimit != 0}">
|
||||||
|
<span th:text="#{uploadLimit}">Maximum file size: </span>
|
||||||
|
<span th:text="${uploadLimitReadable}"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="progressBarContainer" style="display: none; position: relative;">
|
<div class="progressBarContainer" style="display: none; position: relative;">
|
||||||
<div class="progress" style="height: 1rem;">
|
<div class="progress" style="height: 1rem;">
|
||||||
<div class="progressBar progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar"
|
<div class="progressBar progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user