Ну, первый самый простой, ничего особо не нужно - форму прикрутить и заменить чтение файлов с внутренних на временные, присланные в HTTP POST.
Второй вариант внешне не отличается от первого, за исключением того, что всю работу по автоматизации страницы нужно сделать на встроенных скриптах, а не на внешних. А на данный момент я сделал все на jQuery, а это внешняя библиотека. И очень мощная. Я без нее не умею на JS писать. не то чтобы это сложно, но очень муторно и хуже поддерживается разными браузерами на разных платформах.
На третий вариант нужно много времени и желания.

В общем, хуже, чем с музами у Пушкина.
Расскажу историю. Так уж исторически сложилось, что я когда-то решил рисовать сборочные слои по принципу точного соответствия чертежа компонента 1:1. И кроме того, писал текст внутри корпуса, причем одновременно и позиционное обозначение, и номинал, в две строки. Все это было еще в Layout, где сборочный слой был только один (не было display как в Аллегро). Это было удобно тем, что при печати в увеличенном масштабе было сразу видно, что и как стоит. Ну и вообще, картинка глаз радовала. Проблемы начались, когда платы стали 6U, а чип компоненты 0402 и меньше. Производство (ОТК) взбунтовалось, заявив, что им не хватает и формата А2, чтобы увидеть надписи внутри 0402, да еще и в две строки. Попросили увеличить надписи и расставлять вокруг. Тут уже я взбунтовался и сказал, что не готов расставлять на плате увеличенные надписи от всех чипов 0402 по питанию. Распечатал им сборочные слои на PDF принтере, и послал видео, как их проблема решается на практически самом дешевом планшете с 10-дюймовым дисплеем. Однако параллельно с этим упражнялся в веб-программировании, и вот подумалось, что проблему можно было бы решить гораздо более изящно, если бы это был не PDF, а веб-документ. Первым делом пытался отрендерить герберы на PHP и синтезировать битмап. Результат оказался паршивый: качество картинки плохое, а время на рисование слишком большое, чтобы ждать. Ну и опять же, ничем не лучше чем PDF. А главное, в формате GERBER нет никакой информации о том, что там нарисовано; просто тупо: поднять перо, опустить перо, выбрать апертуру провести линию. В общем, куча линий без привязки к компонентам. И вот тогда я стал думать, как бы на гербер наложить зоны, которые могли бы ассоциироваться с компонентами. И где взять описание этих зон. Довольно быстро выбор пал на IDF, там именно размещение и контуры компонентов. И вот, по мере того, как эта идея получала свое развитие, возникло понимание, что собственно гербер то и не нужен совсем. Большинство того, что нужно, и так есть в IDF. IDF умеет делать любой САПР. IDF компактен и легко подправить руками, если что. Собственно, на данный момент там нет только информации об ориентации компонентов, хотя это довольно легко добавить, если ввести в файл библиотеки IDF пару дополнительных команд.
В общем, генератор сборочника по IDF я сделал довольно быстро. Решил показать на реальном производстве. Получил примерно такой ответ: "Идея прекрасная, но к сожалению, ее трудно использовать, потому что официальным документом в жизни принят гербер. Производство не может требовать от клиентов IDF из соображений того, что его ОТК так было бы удобнее. Клиент всегда прав. А 90% клиентов и гербер то себе делают без ляпов с трудом, куда уж там от них требовать IDF, которого они с роду не делали."
Таким образом, идея для масс была заброшена, а сами для себя мы ее потихоньку используем когда опытные платы паяем.
Вот как-то так.
У идеи было продолжение, которое было попробовано еще полгода назад, но тоже никому пока не пригодилось. Задумка была рулить прозрачностью двух слоев, переходя от тотального JPG то тотальной схеме:
http://www.strategic-it.ru/gbr/render_idf_mors8.php