When I do '#undef DrawText' than I get the error:
PdfMFCDemoDlg.cpp(285): error C2039: 'DrawText' : is not a member of
'PoDoFo::PdfPainter'
Than i tried:
#undef DrawText
#define DrawText DrawText
but that gives similar error too.
On Thu, Nov 21, 2013 at 2:57 PM, Ulrich Arnold <ulrich.arn...@t-online.de>wrote:
> Hi!
>
> Before including PoDoFo-headers I do:
>
>
> // GDI-Defines für Ansi/Unicode kollidieren mit PodoFo-Namen
>
> #undef
> CreateFont
>
> #undef
> DrawText
>
> #undef
> GetObject
> to get rid of those defines, that works fine for me.
>
> Uli
>
>
> ------------------------------
> *Von:* Shazad Khan [mailto:xalamk...@gmail.com]
> *Gesendet:* Donnerstag, 21. November 2013 19:59
> *An:* Ulrich Arnold
> *Cc:* podofo-users@lists.sourceforge.net
> *Betreff:* Re: [Podofo-users] two linker errors
>
>
> Good catch! It looks like PoDoFo doesn't use this macro only MFC does. How
> can I separate those? I know MFC replaces many of these calls with A or W
> version, how can I disable that? Thanks
>
> Shahzad
>
>
> On Thu, Nov 21, 2013 at 11:39 AM, Ulrich Arnold <ulrich.arn...@t-online.de
> > wrote:
>
>> Hi!
>>
>> MFC Headers are using a macro to define GDI-DrawText (and some others
>> e.g. CreateFont) as either DrawTextA in ascii or DrawTextW in unicode
>> build. You have to undefine this definitions and in case you use the
>> CDC-Class you must seperate this source from the source using PoDoFo.
>>
>> Uli
>>
>> ------------------------------
>> *Von:* Shazad Khan [mailto:xalamk...@gmail.com]
>> *Gesendet:* Donnerstag, 21. November 2013 17:09
>> *An:* podofo-users@lists.sourceforge.net
>> *Betreff:* [Podofo-users] two linker errors
>>
>>
>> I was able to build the library and the example in console application. I
>> am now using it in MFC application where I will be using it. I get two link
>> errors though:
>>
>> 1>PdfMFCDemoDlg.obj : error LNK2001: unresolved external symbol
>> "public: void __thiscall PoDoFo::PdfPainter::DrawTextW(double,double,class
>> PoDoFo::PdfString const &)" (?DrawTextW@PdfPainter@PoDoFo@
>> @QAEXNNABVPdfString@2@@Z)
>> 1>PdfMFCDemoDlg.obj : error LNK2001: unresolved external symbol "public:
>> class PoDoFo::PdfFont * __thiscall PoDoFo::PdfDocument::CreateFontW(char
>> const *,class PoDoFo::PdfEncoding const * const,enum
>> PoDoFo::PdfFontCache::EFontCreationFlags,bool)" (?CreateFontW@PdfDocument
>> @PoDoFo@@QAEPAVPdfFont@2@PBDQBVPdfEncoding@2
>> @W4EFontCreationFlags@PdfFontCache@2@_N@Z)
>> 1>C:\Users\Shahzad.Khan\Documents\Visual Studio
>> 2010\Projects\PdfMFCDemo\Release\PdfMFCDemo.exe : fatal error LNK1120: 2
>> unresolved externals
>>
>> I am using helloworld example code to generate the pdf. It is surprising
>> to me why I get errors for these 2 calls and rest of calls are fine. Any
>> ideas?
>>
>> Here is the code (exactly same as helloworld code again):
>>
>> void CPdfMFCDemoDlg::CreateHelloWorldPDF(const char * pszFilename)
>> {
>>
>> /*
>> * PdfStreamedDocument is the class that can actually write a PDF
>> file.
>> * PdfStreamedDocument is much faster than PdfDocument, but it is only
>> * suitable for creating/drawing PDF files and cannot modify existing
>> * PDF documents.
>> *
>> * The document is written directly to pszFilename while being
>> created.
>> */
>> PdfStreamedDocument document( pszFilename );
>>
>> /*
>> * PdfPainter is the class which is able to draw text and graphics
>> * directly on a PdfPage object.
>> */
>> PdfPainter painter;
>>
>> /*
>> * This pointer will hold the page object later.
>> * PdfSimpleWriter can write several PdfPage's to a PDF file.
>> */
>> PdfPage* pPage;
>>
>> /*
>> * A PdfFont object is required to draw text on a PdfPage using a
>> PdfPainter.
>> * PoDoFo will find the font using fontconfig on your system and
>> embedd truetype
>> * fonts automatically in the PDF file.
>> */
>> PdfFont* pFont;
>>
>> try {
>> /*
>> * The PdfDocument object can be used to create new PdfPage objects.
>> * The PdfPage object is owned by the PdfDocument will also be deleted
>> automatically
>> * by the PdfDocument object.
>> *
>> * You have to pass only one argument, i.e. the page size of the page to
>> create.
>> * There are predefined enums for some common page sizes.
>> */
>> pPage = document.CreatePage( PdfPage::CreateStandardPageSize(
>> ePdfPageSize_A4 ) );
>>
>> /*
>> * If the page cannot be created because of an error (e.g.
>> ePdfError_OutOfMemory )
>> * a NULL pointer is returned.
>> * We check for a NULL pointer here and throw an exception using the
>> RAISE_ERROR macro.
>> * The raise error macro initializes a PdfError object with a given error
>> code and
>> * the location in the file in which the error ocurred and throws it as an
>> exception.
>> */
>> if( !pPage )
>> {
>> PODOFO_RAISE_ERROR( ePdfError_InvalidHandle );
>> }
>>
>> /*
>> * Set the page as drawing target for the PdfPainter.
>> * Before the painter can draw, a page has to be set first.
>> */
>> painter.SetPage( pPage );
>>
>> /*
>> * Create a PdfFont object using the font "Arial".
>> * The font is found on the system using fontconfig and embedded into the
>> * PDF file. If Arial is not available, a default font will be used.
>> *
>> * The created PdfFont will be deleted by the PdfDocument.
>> */
>> pFont = document.CreateFont( "Arial" );
>>
>> /*
>> * If the PdfFont object cannot be allocated return an error.
>> */
>> if( !pFont )
>> {
>> PODOFO_RAISE_ERROR( ePdfError_InvalidHandle );
>> }
>>
>> /*
>> * Set the font size
>> */
>> pFont->SetFontSize( 18.0 );
>>
>> /*
>> * Set the font as default font for drawing.
>> * A font has to be set before you can draw text on
>> * a PdfPainter.
>> */
>> painter.SetFont( pFont );
>>
>> /*
>> * You could set a different color than black to draw
>> * the text.
>> *
>> * SAFE_OP( painter.SetColor( 1.0, 0.0, 0.0 ) );
>> */
>>
>> /*
>> * Actually draw the line "Hello World!" on to the PdfPage at
>> * the position 2cm,2cm from the top left corner.
>> * Please remember that PDF files have their origin at the
>> * bottom left corner. Therefore we substract the y coordinate
>> * from the page height.
>> *
>> * The position specifies the start of the baseline of the text.
>> *
>> * All coordinates in PoDoFo are in PDF units.
>> * You can also use PdfPainterMM which takes coordinates in 1/1000th mm.
>> *
>> */
>> painter.DrawText( 56.69, pPage->GetPageSize().GetHeight() - 56.69, "Hello
>> World!" );
>>
>> /*
>> * Tell PoDoFo that the page has been drawn completely.
>> * This required to optimize drawing operations inside in PoDoFo
>> * and has to be done whenever you are done with drawing a page.
>> */
>> painter.FinishPage();
>>
>> /*
>> * Set some additional information on the PDF file.
>> */
>> document.GetInfo()->SetCreator ( PdfString("examplahelloworld - A PoDoFo
>> test application") );
>> document.GetInfo()->SetAuthor ( PdfString("Dominik Seichter") );
>> document.GetInfo()->SetTitle ( PdfString("Hello World") );
>> document.GetInfo()->SetSubject ( PdfString("Testing the PoDoFo PDF
>> Library") );
>> document.GetInfo()->SetKeywords( PdfString("Test;PDF;Hello World;") );
>>
>> /*
>> * The last step is to close the document.
>> */
>> document.Close();
>> } catch ( const PdfError & e ) {
>> /*
>> * All PoDoFo methods may throw exceptions
>> * make sure that painter.FinishPage() is called
>> * or who will get an assert in its destructor
>> */
>> try {
>> painter.FinishPage();
>> } catch( ... ) {
>> /*
>> * Ignore errors this time
>> */
>> }
>>
>> throw e;
>> }
>> }
>>
>
>
------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing
conversations that shape the rapidly evolving mobile landscape. Sign up now.
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users