Unable to merge PDF files. Invalid PDF file error

1
oleg
11/28/2007 12:35 AM

After I create PDF file using PdfExporter, I'm unable to merge it with another PDF files (I'm using Cete Software's DynamicPDF/PDFMerger). Every time I'm trying to load PDF file I'm getting 'Invalid PDF File. Cross-Reference not found'. There is no problem with Acrobat Reader, but if you open it in Acrobat Professional you will notice a 'Rebuild' screen pop up and it will prompt you to save the file when it is closed. After that, saved file can be used with PDFMerger.


Wout
11/28/2007 12:43 PM

Hi,

That was a bug indeed in older versions of CadLib, can you please try the latest version?

Thank you,

Wout

oleg
11/28/2007 8:02 PM

Hi Wout,
I didn't go so far to validate PDF file. Actually there was nothing to validate ;-). Whole drawing disappeared except dimensions. I see you removed mapWhiteToBlack from PdfExporter constructor.

Thanks Oleg.

Wout
11/28/2007 8:05 PM

Hi Oleg,

Yes, it changed: the GraphicsConfig.CorrectColorForBackgroundColor replaces the old setting. It was better design having it all consistently controlled by GraphicsConfig, since there are a bunch of other settings as well, that setting was just one of them.

Let me know if that helped!

Wout

oleg
11/28/2007 8:21 PM

Hi Wout,
Yes it helped !!! And there is no problem with PDF merger anymore !

Thanks for your help !

Oleg

oleg
1/24/2008 2:23 AM

Hi Wout,

I've got into the same problem (with Dynamic PDF) right after I start using memory strem instead of the file stream. Following code is working without any problem:

Dim _filestream As Stream = File.Create('testpdfx.pdf')
Dim pdfGraphics As PdfExporter = New PdfExporter(_filestream)
pdfGraphics.DrawPage(_dxfmodel, GraphicsConfig.WhiteBackgroundCorrectForBackColor, to2DTransform, paperSize)
pdfGraphics.EndDocument()
Dim MyDocument As MergeDocument = New MergeDocument(New PdfDocument('testpdfx.pdf'))

Here is snipset with memory stream:

Dim _filestream As MemoryStream = New MemoryStream()
Dim pdfGraphics As PdfExporter = New PdfExporter(_filestream)
pdfGraphics.DrawPage(_dxfmodel, GraphicsConfig.WhiteBackgroundCorrectForBackColor, to2DTransform, paperSize)
pdfGraphics.EndDocument()
Dim MyDocument As MergeDocument = New MergeDocument(New PdfDocument(_filestream.GetBuffer()))
_filestream.Close()

Right after I initialize MyDocument I'm getting error:
Invalid PDF File. Cross-Reference not found.


Thanks
Oleg


Wout
1/24/2008 11:04 AM

Hi Oleg,

Use MemoryStream.ToArray() in stead of GetBuffer(). GetBuffer returns the complete buffer, which is typically a bit more than the actually used part of the buffer.

Also try calling MemoryStream.Flush() before getting its contents with ToArray().

Let me know if that helped.

Wout

oleg
1/25/2008 1:50 AM

It worked !

Thanks Wout.

1