Wszystkie funkcje JavaScript programu Acrobat, które zapisują plik na dysku lokalnym użytkownika, stanowią zagrożenie bezpieczeństwa, więc istnieją pewne ograniczenia dotyczące ich użycia. Te funkcje obejmują doc.saveAs()
i wszystkie funkcje eksportowania danych, takie jak doc.exportAsFDF()
.
Jak można przeczytać here:
Acrobat oferuje nam dwa tryby pracy dla tych funkcji - ze ścieżką bez ścieżki. Jeśli żaden parametr ścieżki nie zostanie przekazany do funkcji , program Acrobat wyświetli okno dialogowe przeglądarki plików. Okno przeglądarki pliku daje użytkownikom kontrolę nad sposobem, w jaki dane są zapisywane w ich systemach na . Jeśli do funkcji jest zapewniona ścieżka, wówczas nie jest wyświetlane żadne okno dialogowe i operacja jest obsługiwana w trybie cichym, tj. Użytkownik jest niekoniecznie świadomy, że dane zostały zapisane na swoim dysku twardym. Jest to problem związany z zabezpieczeniami, więc aby użyć jednej z tych funkcji w trybie cichym, , funkcja musi być wykonywana z uprzywilejowanego kontekstu. Ten numer oznacza, że kod musi znajdować się w zaufanej lokalizacji. Na przykład kod wykonany z okna konsoli, proces wsadowy lub certyfikowany plik PDF jest uprzywilejowany. Gdy dowolna z tych funkcji jest używana z parametrem ścieżki i wykonywana w kontekście nieuprzywilejowanym, program Acrobat wyśle wyjątek w postaci . Uzasadnienie tego ograniczenia polega na tym, że jeśli nie można zaufać kodem , użytkownik musi konkretnie wybrać lokalizację pliku .
Kolejnym ograniczeniem zapisywania danych w systemie użytkownika jest to, że specyfikacja ścieżki musi być Bezpieczną ścieżką. Bezpieczna ścieżka to taka, która nie wskazuje miejsca o ograniczonym dostępie na dysku twardym użytkownika ani dysku , który mógłby stanowić zagrożenie bezpieczeństwa. Przykładami ograniczonych lokalizacji są foldery systemowe i foldery główne dowolnego dysku twardego. Inne foldery, które mogą być ograniczone, zależą od działającego systemu i wrażliwości programistów Acrobata. Żaden z nich nie jest dobrze udokumentowany, dlatego najlepiej używać tych funkcji ostrożnie.
O „Bezpieczne Ścieżki”, API Acrobat JS doc.saveAS
method documentation stany:
Acrobat 6.0 wprowadzono pojęcie bezpiecznej drogi dla JavaScript metod zapisu danych na dysku lokalnym oparciu o ścieżka przeszła do niej przez jeden z jej parametrów. Ścieżka nie może wskazywać na krytyczny folder systemu, na przykład katalog główny, okna lub systemowy. Ścieżka jest również przedmiotem innych nieokreślonych testów. W przypadku wielu metod nazwa pliku musi być zgodna z typem danych, które mają być zapisywane w postaci .Niektóre metody mogą mieć ograniczenie polegające na braku nadpisywania. Te dodatkowe ograniczenia podano w dokumentacji. Ogólnie, gdy ścieżka zostanie uznana za nie bezpieczną, zgłoszony zostanie wyjątek NotAllowedError (patrz Obiekt błędu), a metoda nie powiedzie się.
Na pewno nie można tego zrobić za pomocą metody exportDataObject
, ponieważ nie ma parametru path
, jak można również czytać here:
Parametr „CNAME” jest wymagany wkład i określa konkretny załącznik pliku , który zostanie wyeksportowany. Zauważ, że nie ma parametru ścieżki . W rzeczywistości jest to wejście "cPath" do tej funkcji, ale numer nie jest już ważny. Jeśli spróbujesz użyć ścieżki w tej funkcji, spowoduje to niepowodzenie i wygeneruje wyjątek. Nie ma znaczenia, z jakiego kontekstu wywoływana jest funkcja , ponieważ parametr "cPath" został całkowicie usunięty z użycia.
Kolejne referencje:
Dzięki za dostarczanie informacji! Próbowałem używać Doc.exportAsText, ale po prostu nie działa. Precyzując: 1) Jak utworzyć obiekt tekstowy, jak zapisać go w pliku tekstowym? dzięki – user782104
Already próbowałem utworzyć raport, utworzyć obiekt danych, ale żaden z nich nie może być zapisany w pliku tekstowym ..... – user782104