디스크에서 XPS 파일을로드하고 작성한 메모리 문서에 FixedDocument
또는 FixedDocumentSequence
의 일부로 인쇄하려고합니다. 이중화되어있어 하나의 시퀀스로 인쇄해야합니다..XPS 파일의 XPSDocument를 기존 FixedDocument에로드하십시오.
// create my memory FixedDocument (a packing slip)
DocumentReference mainDocRef = GetMainDoc(); // created in memory
// load XPS document from file (to print on the back)
XpsDocument xpsDoc = new XpsDocument("flyer.xps", FileAccess.Read);
var docSequenceFromFile = xpsDoc.GetFixedDocumentSequence();
var xpsDocRef = docSequenceFromFile.References.First();
// try to combine together
FixedDocumentSequence documentSequence = new FixedDocumentSequence();
documentSequence.References.Add(mainDocRef);
documentSequence.References.Add(xpsDocRef); // THROWS EXCEPTION
// print
XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(printQueue);
xps.Write(documentSequence, ticket);
난 항상 예외로 끝날 :
InvalidOperationException이 : 추가 정보 :
여기에 지금까지 내 최고의 시도의 지정된 요소가 이미 다른 요소의 논리적 자식입니다. 먼저 연결을 끊으십시오.
나는이 작업을 수행하는 여러 가지 방법을 시도했지만, 내가 XpsDocument
을로드하고 내가 메모리에 생성 한 FixedDocumentSequence
의 두 번째 페이지로 인쇄 할 수있는 방법이
같은 오류와 함께 종료 계속 ? 문제는 당신 documentSequence
에로드 된 XPS 파일을 추가로 내가 정확히 GetMainDoc()
방법으로 무엇을 반환됩니다 잘 모릅니다으로 나는 그것을 제외하고 단지 mainDocRef
refrences을 주석 한
WAG,하지만 [RemoveLogicalChild] (http://msdn.microsoft.com/en-us/library/vstudio/system.windows.frameworkcontentelement.removelogicalchild (v = vs.100) .aspx)를 참조하십시오. FixedDocumentSequence. 이것은 모두 WPF, btw입니다. WPF에서 요소는 코드에서 뒤틀리는 인스턴스를 소유하는 개체 (논리 트리에서 시각적 트리가 만들어지고 다를 수 있음)를 소유하는 개체와 같이 최대 하나의 "논리 부모"를 갖습니다. 당신이 원하는 것을하기 위해서, 당신은 다른 부모에게 다시 연결할 수 있도록 부모와 자식의 연결을 끊어야합니다. 내가 연결 한 방법은 이렇게해야한다고 생각합니다. – Will
@Will this is protected method –
보호뿐만 아니라 내부도 –