PDA

Показать полную графическую версию : C# Как скопировать PDF файл с диска в буфер обмена?


Sanchos
21-03-2012, 19:18
Точнее как скопировать содержимое файла (то что видно, скажем в WinHex)...

Весь инет облазил и ничего подходящего не могу найти, может не там смотрю... Вообще, первое что пришло в голову:
Clipboard.SetData(@"Portable Document Format", File.ReadAllBytes(pdfTempFile));
И вроде бы всё записалось но есть одно НО - к данным в буфере в начало добавляется ещё что то, а надо что бы были только данные с самого файла.
Собственно как решить вопрос? Заранее спасибо.

П.С. и не спрашивайте "а нафига тебе это", надо - значит надо :)

Iska
21-03-2012, 20:40
П.С. и не спрашивайте "а нафига тебе это", надо - значит надо »
Во-первых, Вы не правы — может оказаться, что Ваша проблема может нуждаться в ином решении, либо вовсе не нуждаться в решении. Во-вторых, с таким подходом Вы далеко не уедете.

Потому требование — всегда озвучивайте конечную цель — выстрадано простынями оказавшегося ненужным кода и часами потерянного времени.

ferget
21-03-2012, 20:44
И вроде бы всё записалось но есть одно НО - к данным в буфере в начало добавляется ещё что то, а надо что бы были только данные с самого файла. »

что именно добавляется?

Sanchos
21-03-2012, 21:23
что именно добавляется?

см. аттач (выделенное)

П.С. и в догонку такой момент: если я записываю данные в буфер методом из первого поста, тогда я их же могу получить таким способом:
Clipboard.GetData("Portable Document Format") as byte[];
А те данные что записываются сторонним приложением (в ПДФ без добавления в начале) так уже не найти.
Суть в том что мне нужно обеспечить возможность копи-паста между двумя программами и ПДФ подходит как нельзя лучше, т.к. данные -- векторная/растровая графика с эффектами.

Sanchos
21-03-2012, 21:58
Блин и как всегда оказалось очень просто:


var ms = new MemoryStream(File.ReadAllBytes(@"c:\test.pdf"));
var iData = new DataObject();
iData.SetData(@"Portable Document Format", ms, false);
Clipboard.SetDataObject(iData, true);

Delirium
22-03-2012, 02:15
Sanchos, из-за часовых поясов не успел тебе ответить, ты сам нашел решение :). Отметь тему решенной, если вопрос снят.




© OSzone.net 2001-2012