2010-01-05 5 views
2

저는 다양한 InfoPath 템플릿 (20)과 관련된 일련의 XML 파일 (~ 10k)을 프로그래밍 방식으로 개방 한 다음 채워진 양식을 PDF로 네트워크 공유에 저장해야했습니다. 이것은 일회성 작업입니다.InfoPath 양식을 PDF로 자동 변환

XML 파일 집합과 open them in InfoPath을 순환하는 코드가 있습니다. 그러나 documented command-line parameters은 내 요구에 충분하지 않습니다 (인쇄/닫기 매개 변수 없음).

누구나 InfoPath가 특정 파일을 열고 PDF로 인쇄하고 인쇄 할 때 종료하도록 시작 매개 변수에 대한 제안 사항을 제공 할 수 있습니까? 이 목표를 달성하기위한 다른 방법이 있습니까?

우리는 InfoPath는 2007을 사용하고 있고 파일이 InfoPath는 대한 COM Interop 어셈블리 (Microsoft.Office.Interop.InfoPath에 대한 참조를 추가) 당신이 XML을 인쇄 할 수 있습니다를 사용하여 MOSS 2007

+0

PDF 프린터가 있습니까? 아니면 PDF로 변환합니까? –

+0

나는 보통 이런 식으로 PDFCreator를 사용한다. 지정된 위치로 자동 인쇄하도록 설정 한 다음 파일을 이동하고 이름을 바꾸기 전에 기다립니다. –

답변

1

에서 호스팅되는 다음 스 니펫을 사용하여 양식을 작성하십시오.

using Microsoft.Office.Interop.InfoPath; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Application app = new Application(); 
     XDocument xdoc = app.XDocuments.Open(@"C:\tmp\Form1.xml", 1); 
     xdoc.PrintOut(); 
     app.Quit(false); 
    } 
} 

기본 프린터 설정을 사용하여 인쇄가 수행되며이를 변경하는 방법을 찾지 못했습니다. 그러나, 그것은 당신을 위해 일회성 과제이므로 문제가되어서는 안된다고 생각합니다.

기타 문제는 PDF 프린터의 출력 파일 이름을 지정하는 방법이 없다는 것입니다. 기본 이름을 사용하도록 프린터를 구성한 다음 파일이 인쇄 될 때까지 기다렸다가 이동 한 후 다음 문서를 인쇄 할 수 있습니다.

0

그리고 COM을 사용하는 Powershell의 @Dirk Vollmar의 답변입니다.

$app = New-Object -ComObject InfoPath.Application 
$xdoc = $app.XDocuments.Open('C:\path\file.xml', 1) 
$xdoc.PrintOut() 
Start-Sleep -Seconds 2 
$app.Quit($true) 

InfoPath는 자동화에 대한 자세한 내용은 마이크로 소프트의 documentation을 참조하십시오.

관련 문제