我想创建一个WCF服务(像windows服务一样工作)。此服务将从特定路径读取PDF文件,提取页面,创建新的PDF文件并将其返回给调用者。
我该怎么做?我使用QuickPDF处理PDF文件,我可以提取和创建新的PDF文件。如何在WCF服务中使用它?
等待你的帮助...
这只是示例代码:
public Stream ExtractPdf(string PathOfOriginalPdfFile, int StartPage,int PageCount)
{
PDFLibrary qp = new PDFLibrary();
Stream Stream_ = null;
if (qp.UnlockKey(".................") == 0)
{
string fileName = @"..\..\Test Files\sample1.pdf";
string OutputFile = @"..\..\Test Files\sample1_extracted.pdf";
if (qp.Unlocked() == 1)
{
int docID = qp.LoadFromFile(fileName, "");
int extractPageSuccess = qp.ExtractPages(StartPage, PageCount);
if (extractPageSuccess == 0)
{
// error
}
else
{
qp.SaveToFile(OutputFile);
}
}
}
//
// Codes here
//
return Stream_;
}
我编辑了它:
public byte[] ExtractPdf(string PathOfOriginalPdfFile, int StartPage,int PageCount)
{
QuickPDFDLL0815.PDFLibrary qp = new QuickPDFDLL0815.PDFLibrary(@"C:\Program Files (x86)\Quick PDF Library\DLL\QuickPDFDLL0815.dll");
string fileName = @"..\..\Test Files\sample1.pdf";
byte[] binFile = null;
if (qp.UnlockKey("...................") == 0)
{
if (qp.Unlocked() == 1)
{
int docID = qp.LoadFromFile(fileName, "");
int extractPageSuccess = qp.ExtractPages(StartPage, PageCount);
if (extractPageSuccess == 0)
{
// error
}
else
{
binFile = qp.SaveToString();
}
}
}
return binFile;
}
答案 0 :(得分:3)
您可以将文件作为Stream
发送,请参阅How to: Enable Streaming,然后在客户端上保存文件并让shell执行它。 MSDN文章包含示例GetStream
方法以及Writing a custom stream
上的整个部分。
如果你想要更全面的示例代码,论坛帖子Streamed file transfer using WCF 从一些开头,但请注意,作者在那里发布了它,因为他们遇到了运行它的问题。
对于byte []或stream,请参阅Uploading Image Blobs–Stream vs Byte Array和Stream vs Raw Bytes。第二个州
Streams对大文件的效果会更好,因为不是所有文件都需要一次读入内存