Project

General

Profile

Actions

Bug #105543

closed

Image with filename containing '@' produces warning in log

Added by Florian Seirer about 1 month ago. Updated 4 days ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
File Abstraction Layer (FAL)
Target version:
-
Start date:
2024-11-05
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
12
PHP Version:
8.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Everytime a file which has '@' somewhere in the filename is used in the frontend, a warning is logged in /var/log/typo3_something.log:

[WARNING] request="559958bb7e25f" component="TYPO3.CMS.Frontend.ContentObject.ContentObjectRenderer": The image "/fileadmin/_test_/temp/oeaeuess%40EUR-____________.png" could not be found and won't be included in frontend output- FolderDoesNotExistException: Folder "/_test_/temp/oeaeuess%40EUR-____________.png/" does not exist., in file /var/html/vendor/typo3/cms-core/Classes/Resource/Driver/LocalDriver.php:291 - {"file":"/fileadmin/_test_/temp/oeaeuess%40EUR-____________.png","exception":"TYPO3\\CMS\\Core\\Resource\\Exception\\FolderDoesNotExistException: Folder \"/_test_/temp/oeaeuess%40EUR-____________.png/\" does not exist. in /var/html/vendor/typo3/cms-core/Classes/Resource/Driver/LocalDriver.php:291\nStack trace:\n#0 /var/html/vendor/typo3/cms-core/Classes/Resource/ResourceStorage.php(2547): TYPO3\\CMS\\Core\\Resource\\Driver\\LocalDriver->getFolderInfoByIdentifier()\n#1 /var/html/vendor/typo3/cms-core/Classes/Resource/ResourceFactory.php(359): TYPO3\\CMS\\Core\\Resource\\ResourceStorage->getFolder()\n#2 /var/html/vendor/typo3/cms-core/Classes/Resource/ResourceFactory.php(330): TYPO3\\CMS\\Core\\Resource\\ResourceFactory->getFolderObjectFromCombinedIdentifier()\n#3 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(3800): TYPO3\\CMS\\Core\\Resource\\ResourceFactory->retrieveFileOrFolderObject()\n#4 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ImageResourceContentObject.php(33): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->getImgResource()\n#5 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(709): TYPO3\\CMS\\Frontend\\ContentObject\\ImageResourceContentObject->render()\n#6 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(656): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->render()\n#7 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(625): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSingle()\n#8 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(605): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSeparated()\n#9 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectArrayContentObject.php(43): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGet()\n#10 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(709): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectArrayContentObject->render()\n#11 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(656): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->render()\n#12 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/FilesContentObject.php(74): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSingle()\n#13 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(709): TYPO3\\CMS\\Frontend\\ContentObject\\FilesContentObject->render()\n#14 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(656): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->render()\n#15 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentContentObject.php(95): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSingle()\n#16 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(709): TYPO3\\CMS\\Frontend\\ContentObject\\ContentContentObject->render()\n#17 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(656): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->render()\n#18 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(625): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSingle()\n#19 /var/html/vendor/typo3/cms-frontend/Classes/ContentObject/ContentObjectRenderer.php(605): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSeparated()\n#20 /var/html/vendor/typo3/cms-frontend/Classes/Http/RequestHandler.php(627): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGet()\n#21 /var/html/vendor/typo3/cms-frontend/Classes/Http/RequestHandler.php(201): TYPO3\\CMS\\Frontend\\Http\\RequestHandler->processHtmlBasedRenderingSettings()\n#22 /var/html/vendor/typo3/cms-frontend/Classes/Http/RequestHandler.php(135): TYPO3\\CMS\\Frontend\\Http\\RequestHandler->generatePageContent()\n#23 /var/html/vendor/fluidtypo3/vhs/Classes/Middleware/AssetInclusion.php(18): TYPO3\\CMS\\Frontend\\Http\\RequestHandler->handle()\n#24 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): FluidTYPO3\\Vhs\\Middleware\\AssetInclusion->process()\n#25 /var/html/vendor/typo3/cms-core/Classes/Middleware/ResponsePropagation.php(34): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#26 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Core\\Middleware\\ResponsePropagation->process()\n#27 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/ContentSecurityPolicyHeaders.php(56): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#28 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\ContentSecurityPolicyHeaders->process()\n#29 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/OutputCompression.php(44): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#30 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\OutputCompression->process()\n#31 /var/html/external-extensions/mail/Classes/Middleware/MarkdownMiddleware.php(32): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#32 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): MEDIAESSENZ\\Mail\\Middleware\\MarkdownMiddleware->process()\n#33 /var/html/vendor/friendsoftypo3/jumpurl/Classes/Middleware/JumpUrlHandler.php(74): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#34 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): FoT3\\Jumpurl\\Middleware\\JumpUrlHandler->process()\n#35 /var/html/external-extensions/mail/Classes/Middleware/JumpurlMiddleware.php(137): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#36 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): MEDIAESSENZ\\Mail\\Middleware\\JumpurlMiddleware->process()\n#37 /var/html/vendor/typo3/cms-adminpanel/Classes/Middleware/AdminPanelDataPersister.php(41): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#38 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Adminpanel\\Middleware\\AdminPanelDataPersister->process()\n#39 /var/html/vendor/typo3/cms-adminpanel/Classes/Middleware/AdminPanelRenderer.php(42): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#40 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Adminpanel\\Middleware\\AdminPanelRenderer->process()\n#41 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/ContentLengthResponseHeader.php(42): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#42 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\ContentLengthResponseHeader->process()\n#43 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/ShortcutAndMountPointRedirect.php(93): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#44 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\ShortcutAndMountPointRedirect->process()\n#45 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/PrepareTypoScriptFrontendRendering.php(58): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#46 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\PrepareTypoScriptFrontendRendering->process()\n#47 /var/html/vendor/tomasnorre/crawler/Classes/Middleware/CrawlerInitialization.php(56): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#48 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): AOE\\Crawler\\Middleware\\CrawlerInitialization->process()\n#49 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/TypoScriptFrontendInitialization.php(112): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#50 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\TypoScriptFrontendInitialization->process()\n#51 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/PageArgumentValidator.php(113): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#52 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\PageArgumentValidator->process()\n#53 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/PreviewSimulator.php(90): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#54 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\PreviewSimulator->process()\n#55 /var/html/vendor/typo3/cms-adminpanel/Classes/Middleware/SqlLogging.php(53): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#56 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Adminpanel\\Middleware\\SqlLogging->process()\n#57 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/PageResolver.php(102): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#58 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\PageResolver->process()\n#59 /var/html/vendor/studiomitte/redirect2trailingslash/Classes/Http/TrailingSlashRedirect.php(39): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#60 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): StudioMitte\\Redirect2trailingslash\\Http\\TrailingSlashRedirect->process()\n#61 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/StaticRouteResolver.php(63): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#62 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\StaticRouteResolver->process()\n#63 /var/html/vendor/tomasnorre/crawler/Classes/Middleware/FrontendUserAuthenticator.php(63): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#64 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): AOE\\Crawler\\Middleware\\FrontendUserAuthenticator->process()\n#65 /var/html/vendor/typo3/cms-adminpanel/Classes/Middleware/AdminPanelInitiator.php(51): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#66 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Adminpanel\\Middleware\\AdminPanelInitiator->process()\n#67 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/ContentSecurityPolicyReporter.php(42): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#68 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\ContentSecurityPolicyReporter->process()\n#69 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/SiteBaseRedirectResolver.php(90): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#70 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\SiteBaseRedirectResolver->process()\n#71 /var/html/vendor/typo3/cms-redirects/Classes/Http/Middleware/RedirectHandler.php(68): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#72 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Redirects\\Http\\Middleware\\RedirectHandler->process()\n#73 /var/html/vendor/lochmueller/staticfilecache/Classes/Middleware/PrepareMiddleware.php(46): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#74 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): SFC\\Staticfilecache\\Middleware\\PrepareMiddleware->process()\n#75 /var/html/vendor/lochmueller/staticfilecache/Classes/Middleware/GenerateMiddleware.php(51): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#76 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): SFC\\Staticfilecache\\Middleware\\GenerateMiddleware->process()\n#77 /var/html/vendor/lochmueller/staticfilecache/Classes/Middleware/CookieCheckMiddleware.php(44): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#78 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): SFC\\Staticfilecache\\Middleware\\CookieCheckMiddleware->process()\n#79 /var/html/vendor/lochmueller/staticfilecache/Classes/Middleware/FrontendUserMiddleware.php(27): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#80 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): SFC\\Staticfilecache\\Middleware\\FrontendUserMiddleware->process()\n#81 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/FrontendUserAuthenticator.php(72): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#82 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\FrontendUserAuthenticator->process()\n#83 /var/html/vendor/apache-solr-for-typo3/solr/Classes/Middleware/PageIndexerInitialization.php(62): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#84 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): ApacheSolrForTypo3\\Solr\\Middleware\\PageIndexerInitialization->process()\n#85 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/BackendUserAuthenticator.php(79): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#86 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\BackendUserAuthenticator->process()\n#87 /var/html/vendor/typo3/cms-core/Classes/Middleware/RequestTokenMiddleware.php(71): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#88 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Core\\Middleware\\RequestTokenMiddleware->process()\n#89 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/MaintenanceMode.php(51): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#90 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\MaintenanceMode->process()\n#91 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/SiteResolver.php(53): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#92 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\SiteResolver->process()\n#93 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/EidHandler.php(48): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#94 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\EidHandler->process()\n#95 /var/html/vendor/typo3/cms-core/Classes/Middleware/NormalizedParamsAttribute.php(41): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#96 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Core\\Middleware\\NormalizedParamsAttribute->process()\n#97 /var/html/vendor/fluidtypo3/vhs/Classes/Middleware/RequestAvailability.php(14): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#98 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): FluidTYPO3\\Vhs\\Middleware\\RequestAvailability->process()\n#99 /var/html/vendor/typo3/cms-core/Classes/Middleware/VerifyHostHeader.php(55): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#100 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Core\\Middleware\\VerifyHostHeader->process()\n#101 /var/html/vendor/typo3/cms-frontend/Classes/Middleware/TimeTrackerInitialization.php(46): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#102 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): TYPO3\\CMS\\Frontend\\Middleware\\TimeTrackerInitialization->process()\n#103 /var/html/vendor/lochmueller/staticfilecache/Classes/Middleware/FallbackMiddleware.php(49): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#104 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(162): SFC\\Staticfilecache\\Middleware\\FallbackMiddleware->process()\n#105 /var/html/vendor/typo3/cms-core/Classes/Http/MiddlewareDispatcher.php(70): Psr\\Http\\Server\\RequestHandlerInterface@anonymous->handle()\n#106 /var/html/vendor/typo3/cms-core/Classes/Http/AbstractApplication.php(83): TYPO3\\CMS\\Core\\Http\\MiddlewareDispatcher->handle()\n#107 /var/html/vendor/typo3/cms-frontend/Classes/Http/Application.php(59): TYPO3\\CMS\\Core\\Http\\AbstractApplication->handle()\n#108 /var/html/vendor/typo3/cms-core/Classes/Http/AbstractApplication.php(95): TYPO3\\CMS\\Frontend\\Http\\Application->handle()\n#109 /var/html/web/index.php(20): TYPO3\\CMS\\Core\\Http\\AbstractApplication->run()\n#110 /var/html/web/index.php(21): {closure}()\n#111 {main}"}

I can reproduce this by uploading a file named "öäü߀-_#'!§$%&()=.png" which gets renamed to "oeaeuess@EUR-____________.png" after the upload. Note the is the only character that still remains.

You can open the preview directly in the filelist module, and you can add the image to an image content element as usual. The image is then shown in the frontend without an error, but said warning is logged in the logfile.

If I remove the @ from the filename no warning is logged.

TYPO3 12.4.22 | PHP 8.2.13 | [SYS][UTF8filesystem] = false

Actions #1

Updated by Christian Kuhn 11 days ago · Edited

  • Status changed from New to Needs Feedback

Hey. I tried to reproduce this in v12 with UTF8filesystem=false, but failed. I may not have an identical FE rendering chain. I uploaded an image called "" and its rendered in FE without issues, but I'm also not hitting the code path that seems to raise the warning.

Could you maybe try to document the FE TS setup that triggers this? At best, starting with the page=PAGE object, plus mentioning if fluid_styled_content is involved or not and the included TS snippets of a sys_template record?

Actions #2

Updated by Florian Seirer 7 days ago

Hm, only some of my TYPO3 installations are affected, so this seems to be some misconfiguration/templating issue on my end.

I'll do some digging, but I think you can close this, for now.

Actions #3

Updated by Garvin Hicking 4 days ago

  • Category set to File Abstraction Layer (FAL)
  • Status changed from Needs Feedback to Closed

Thanks for getting back. Closing for now, if you find out further details please let us know :)

Actions

Also available in: Atom PDF