Sembra che il problema sia riferito all'omissione di alcuni parametri dell'header ma posso dare un conferma al 100%.
Ti potrei dire ci fare delle prove inserendo appunto i dati dell'header, in una situazione simile a questa:
codice:
function sendFile2Server($nomefile, $codice, $anno)
{
global $ip;
$args1['file'] = new CurlFile($nomefile, 'image/png');
$args1["path"] = "SCANNER";
$args1["codice"] = "4";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://$ip/vinaccia/vina_receive_scansione.php");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args1);
$result = curl_exec($ch);
header('Cache-Control: public');
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . $nomefile . '"');
header('Content-Length: ' . strlen($result));
curl_close($ch);
return $result;
}