Translating Pascal to human-readable C would seem to be pretty straightforward. Pascal's inner function definitions would be pretty easy to handle, you could pass a pointer to the variables that are neither local nor global, which is a special case of closure conversion. Strings would be a minor challenge; you'd probably have to accept less-than-idiomatic C.
But it would be virtually impossible to translate C to Pascal without leaving significant parts of the translation incomplete, or abandoning either human-readable code or cross-compiler portability. Function pointers and setjmp/longjmp would be very difficult to handle, not to mention pointer arithmetic and typing, or less than common idioms such as Duff's Device.
Of course, there is a fair bit of C code that's hopelessly tied to a particular implementation, so no matter what you do, you can find a "pathological" C program that will break the translator. And there are a lot of pathological C programs floating around out there.
Not sure what you are looking for in a C -> Java translator, but considering the difficulties above for a problem that's probably somewhat easier, C -> Java would seem to be a fool's errand...