IE (HTTPS): генерация PDF из php файла не работает

Это вариант панды в ответе Рафаэля.

Панды read_csv могут читать одну строку из файла, благодаря параметрам skiprows и nrows. Сложная часть заключается в том, как найти случайный номер строки ...

Итак, простой способ - прочитать все строки из входного файла, выбрать случайную строку и вставить эту строку в кадр данных:

import pandas as pd
import random
import io

with open("someurl.dat") as fd:
    line = random.choice(fd.readlines)

df = pd.read_csv(io.StringIO(line), sep='\s+', header=None)

Кстати, ваш код не может дать вам ожидаемый кадр данных. С

market_basket = pd.read_csv(data_url, header=None, delimiter='\n+', engine="python")
sample = market_basket.sample(n=1)

market_basket - это DataFrame с одним столбцом, содержащим полные строки, проиндексированные по номеру их строки в файле. Итак, sample - это 40911-я строка, содержащая 39 2787 2858 5016 5041 13569. Чтобы разобрать его, вам все равно нужно сначала извлечь текущее поле (.iloc[0][0]) и разделить его:

sample = pd.read_csv(io.StringIO(sample.iloc[0][0]), sep='\s+', header=None)
11
задан Zack Marrapese 22 February 2012 в 18:30
поделиться

4 ответа

Я понял, в чем проблема. Это ошибка IE, связанная с IE, HTTPS и аддонами. (См. здесь )

Это была проблема с кэшированием. Когда я установил:

  header("Cache-Control:  max-age=1");
  header("Pragma: public");

(см. здесь ), PDF находился в кеше достаточно долго, чтобы дополнение Adobe Reader могло его захватить.

19
ответ дан 3 December 2019 в 04:33
поделиться

У меня тоже была эта проблема, я использовал следующее, что, кажется, работает нормально

header("Content-type: application/pdf");
header("Content-Length: $length");
header("Content-Disposition: inline; filename='$filename'");
3
ответ дан 3 December 2019 в 04:33
поделиться

Я думаю, вам нужно добавить больше заголовков.

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=THEFILENAME.pdf;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . strlen($results[1]));
-2
ответ дан 3 December 2019 в 04:33
поделиться

Попробуйте это:

 header("Content-Type: application/pdf");
 header("Content-Disposition: inline; filename=foo.pdf");
 header("Accept-Ranges: bytes");
 header("Content-Length: $len");
 header("Expires: 0");
 header("Cache-Control: private");

Также, если вы используете сеансы, вы можете попробовать установить

session_cache_limiter("none");

или

session_cache_limiter("private");
]
2
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: